当前位置: 首页 > wzjs >正文

个人开店做外贸网站建设公司官网的请示

个人开店做外贸网站,建设公司官网的请示,可以盗链图片的网站,cms网站后台管理系统目录 ObjC NSString字符串常量编码格式是编译器决定还是ObjC语言规范决定? NSString *s "hello"变量s是不可变的吗? ObjC语言NSString *s "a我a" 字符串的长度是多少? 各式各样的字符串类型 字符串默认编码 ObjC字符串为什么有前缀? ObjC NSSt…

目录

ObjC NSString字符串常量编码格式是编译器决定还是ObjC语言规范决定?

NSString *s = @"hello"变量s是不可变的吗?

ObjC语言NSString *s = @"a我a" 字符串的长度是多少?

各式各样的字符串类型

字符串默认编码

ObjC字符串为什么有@前缀?


ObjC NSString字符串常量编码格式是编译器决定还是ObjC语言规范决定?

如下为例,NSString *s = @"a我a",以GNUStep GCC编译器为参考,用默认UTF-8源代码编码格式,字符串s是UTF-8编码。gcc编译器增加-fexec-charset=GB2312修改字符串编码,可以编译通过,s就变成了GB2312编码格式。这说明,NSString字符串编码是跟随编译器的设定,而非所谓ObjC语言规范,ObjC语言本身也没有这个规范。

NSString *s = @"hello"变量s是不可变的吗?

先说结论,s指针是可变的,可指向其他对象,但@"hello"字符串字符本身不可变。编程语言设计的不可变字符串是指对应的字符串不可被修改,可以共用、优化处理。但它返回给一个指针保存,此指针本身所指向地址是可以修改的,但内容不能改变。如果需要s不可指向其他地址,可以加const约束,例如NSString * const s = @"Objective-C";

ObjC语言NSString *s = @"a我a" 字符串的长度是多少?

首先要清楚,如果是GCC编译,默认源代码需要的UTF-8格式,NSString类型字符串s也是按UTF-8格式保存,即字符串s的raw data是61 e6 88 91 61. s的长度[s length]并不是5,而是3. NSString的length属性是按字符个数,而非字节个数,UTF-8中文是三个字节,只是一个字符。

各式各样的字符串类型

  • C/ObjC/C++支持原始字符串指针char *指示字符串首地址或char []数组存储字符串。
    ObjC还支持NSString字符串以@开头,例如@"hello",它属于Foundation框架字符串类库。
    C++ STL模板库封装char *的string更好用。
    NSString字符串少写了@开头,会提示编译错误。
  • Swift/Java/仓颉/Rust/VB/Kotlin:String
  • C#/Go: string
    不同的是,Go字符串是值类型。
  • Python/JS 的字符串是用单引号或双引号括起来,例如'hello' 或 "good".
  • JS有点复杂,字符串分成基本字符串和字符串对象。普通字符串字面量或String()函数都会产生基本字符串,用new String()创建的是字符串对象,这种和普通C++/C#创建的字符串对象类似,有自己单独的地址。
    • 用eval函数处理基本字符串和字符串对象是截然不同的,基本字符串如果有表达式运算会直接计算,而字符串对象会按对象处理。
      例如:eval("3+2") 返回 5,而eval(new String("3+2")) 返回字符串 "3+2".
  • Pascal 字符串类型是string.

字符串默认编码

随着编程语言逐渐国际化,字符串并不总是早期的ASCII码,中文也逐渐进入编程语言的世界。不同编程语言和编译器因设计差异,字符串默认编码也可能存在差异。

  • GCC/G++/Clang/Clang++编译的C/C++代码默认字符串为UTF-8编码,MSVC默认字符串为ANSI编码。ObjC编译器是GCC或Clang, 跟随编译器的特性,NSString字符串默认编码也是UTF-8.
    • 可通过objdump -x -s a.out获取字符串常量的数值。
  • Rust字符串默认编码也是UTF-8编码,可用str.as_bytes()获取原始数据。
  • Swift 5之前字符串默认编码是ASCII(如果字符串每个字符都是ASCII码)和UTF-16,Swift 5之后(包含)默认编码为UTF-8.
  • Go默认字符串原始数据为UTF-8编码,通过[]byte(str)获取原始字节数据。
  • Java/C#字符串原始数据是UTF-16编码(字符串被加载到内存中的编码),尽管java编译出.class文件可能是UTF-8编码。

ObjC字符串为什么有@前缀?

这是为了和普通C语言字符串区分开, @前缀代表字符串是NSString *类型,这种类型并不能和char *直接等价。


若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。


文章转载自:

http://FM2aYfiA.kgnnc.cn
http://fMx6N3zT.kgnnc.cn
http://7b8wGqFr.kgnnc.cn
http://NfMvnxLL.kgnnc.cn
http://lXaHfqvz.kgnnc.cn
http://A15z8gYJ.kgnnc.cn
http://axL5I5bh.kgnnc.cn
http://iKVzezdF.kgnnc.cn
http://EAr01EsE.kgnnc.cn
http://PF9eYLPk.kgnnc.cn
http://MSdAVqcd.kgnnc.cn
http://IocLOp73.kgnnc.cn
http://IkZiVH1j.kgnnc.cn
http://1vtaPERg.kgnnc.cn
http://Qt8IbpyB.kgnnc.cn
http://OF4XIjaD.kgnnc.cn
http://Lc0BLt9L.kgnnc.cn
http://bo9Dv6cr.kgnnc.cn
http://dmiJ8HZf.kgnnc.cn
http://9rTMmWLO.kgnnc.cn
http://ic239tgU.kgnnc.cn
http://WEivt7iG.kgnnc.cn
http://Ag1eLnvQ.kgnnc.cn
http://Zd3z37Lk.kgnnc.cn
http://1SCAKQDt.kgnnc.cn
http://lKZ4OwvC.kgnnc.cn
http://C0RHFsyI.kgnnc.cn
http://EKEaSB1E.kgnnc.cn
http://mIsJIjM3.kgnnc.cn
http://rEUABPKB.kgnnc.cn
http://www.dtcms.com/wzjs/676773.html

相关文章:

  • 代做原创毕业设计网站做网站需要公司备案
  • 济南外贸网站制作html制作网页的代码
  • 织梦禁止网站右击餐饮网站建设服务器
  • 锦州做网站公司合肥关键词网站排名
  • 企业网站设计过程中做网站页面用什么
  • 妇幼网站建设pptvue门户网站模板
  • 网站建设制作介绍河南seo优化方法有哪些
  • 大学生创业服务网站建设方案网站栏目排序
  • 包包网站建设策划书个人网站备案备注信息
  • 购物网站的建设思维导图做个网站上百度怎么做
  • wordpress仿站软件中裕隆建设有限公司网站
  • 网站导航栏代码常平哪里有招计算机网站开发的
  • 网站快照wordpress采集淘宝
  • 深圳市网站制作最好的公司163邮箱登录企业邮箱
  • 班级网站建设规划书国内外ai设计素材网站
  • 西安网站优化公司美食网站建设的意义
  • wordpress主题 淘宝客seo精华网站
  • 潍坊做网站联系方式网站建设课程教学计划
  • 苏州吴中区建设局网站哈尔滨做网站建设
  • 网站建设ssc源码平台济南活动搭建公司
  • 网站开发什么技术海东地网站建设
  • 将二级域名 网站目录做网站底色怎么选
  • 惠州市建网站公司开源项目网站
  • 网站登录密码忘记了网站主题推荐
  • 网站开发需要多少钱推荐营销网站的渠道构成基本包括
  • .net开发大型网站开发晋中建设网站
  • 大学科技园网站建设金蝶软件是干什么的
  • 网站做seo多少钱松岗网站
  • 教育类php开源网站网站建设前端需要看什么书
  • 深圳住房城乡建设局网站网站建设类岗位有哪些