`

Objective-C 数据类型整理

 
阅读更多

id 数据类型 可存储任何类型的对象。从某种意义说,它是一般对象类型。

 

例如,程序行

     id number;

     将number声明为id类型的变量。可声明方法使其具有id类型的返回值,如下:

     -(id) newObject: (int) type;

     这个程序行声明了一个名为newObject的实例方法,它具有名为type的单个整型参数并有id类型的返回值。应该注意的是,对返回值和参数类型声明来说,id是默认的类型。因此,以下程序行:

     +allocInit;

     声明了一个返回id类型的类方法。
     id类型是Objective-C中的非常重要的数据类型,它是多态和动态绑定的基础,这在以后的苹果开发中会经常用到。


    *在Objective-C里有如下几个限定词需要了解:long,long long, short,unsigned,signed

     long

     如果直接把限定词long放在int声明之前,那么所声明的整型变量在某些计算机上具有扩展的值域。一个long int声明的例子为:

     long int factorial;

     这条语句将变量factorial声明为long的整型变量,也就是长整型。就象float和double变量一样,long变量的具体精度是由具体的计算机系统决定的。在许多系统上,int与long int具有相同的值域,而且任何一个都能存储4个字节(1个字节8位),32位宽(2,147,483,647)的整型值。long在限定整型的时候,实际相当于双精度的short,什么是short? Mike后面会谈。


     long int类型 的常量值可通过在整型常量末尾添加字母L(大小写均可)来形成。单数字和L之间不允许由空格。因为小写的L和数字1容易混淆,建议有用到这种情况,都用大写。下面是个简单的例子:

     long int numberOfPoints = 131071100L;

     将变量numberOfPoints声明为长整型,而且初值为131,071,100。
     要用NSLog显示long int的值,使用字母l做为修饰符并放在整型格式符号i,o和x之前。例如“%lx”表示十六进制格式显示值。

     当然,我们同样可以把 long 标识符放在double声明之前。范例如下:

     long double US_deficit_2004;

     long double常量可写成其尾部带有字母l或L的浮点常量,例如:1.234e+7L
     要显示long double的值,需要使用修饰符L。因此,%Lf用浮点计数法显示long double的值,%Le用科学计数法显示同样的值,而%Lg将告诉NSLog在%Lf和%Le之间任选一个使用。



     long long

     双长整型相当于双精度long,可以用如下形式使用:

     long long int maxAllowedStorage;

     这条语句把指定的变量声明为具有特定扩展精度的双长整型变量,该扩展精度保证变量至少8个字节,具有64位的宽度。NSLog字符串不使用单个字母l,而使用两个l来显示long long的整数,例如“%lli”。



     short

     把限定词short放在int声明之前时,它告诉Objective-C编译器要声明的特定变量用来存储相当小的整数。之所以使用short变量,主要原因是对节约内存空间的考虑,当程序员需要大量内存而可用的内存量又十分有限时,比如iPhone开发的时候,就可用short变量来解决这个问题。
     在某些计算机上,short int占用的内存空间是常规int变量所占空间的一半。在任何情况下,确保分配给short int的空间数量不少于2个字节,16位。

     注意,在Objective-C中,没有其他方法可显式地编写short int型常量。要显示short int变量,可将字母h放在任何普通的整型转换符之前,如:%hi,%ho或%hx。换句话说,可用任何整型转换符号来显示short int,因为当它作为参数传递给NSLog例程时,可转换成整数。



     unsigned

     顾名思义,这个最终限定词就是无符号,可放在int变量之前,当整数变量只用来存储正数的情况下使用最终限定符。以下语句

     unsigned int counter;

     向编译器声明:变量counter只用来保存正值。通过限制整型变量的使用,使它专门存储正整数,可以扩展整型变量的精度。一般unsigned int可简写为uint。
     通过将字母u(或U)放在常量之后,可产生unsigned int常量,例如:0x00ffu
     编写整型常量时,可将字母u(或U)和l(或L)组合起来使用,例如30000UL,告诉编译器将常量20000看作unsigned long。



     简写

     将变量声明为long int,short int或unsigned int类型时,关键字int 可以省略。因此unsigned变量counter可等价地声明为以下形式:

     unsigned counter;

     同时可将char变量声明为unsigned。



     signed

     signed限定词可明确地告诉编译器特定变量是有符号的。它主要用在char声明前面,这个就比较复杂,此处按下不表。



Mike 在介绍完 Objective-C 中的四大基本类型之一 int 类型 后,接下来不得不提的就是 float 类型。声明为 float 类型的变量可存储包含小数位的值。要区分浮点常量,可通过查看其是否包含小数点。可以省略小数点之前的数字,也可以省略之后的数字。然而,显然不能将它们全部省略。值 3.  125.8  -.0001 都是合法的浮点常量。要显示浮点值,可用 NSLog 转换字符 %f。

     浮点常量也能使用所谓的科学计数法来表示。值 1.7e4 就是使用这种计数法来表示的浮点值,它表示值 1.7*10 的 4 次方。位于字母 e 前的值称为尾数,而之后的值称为指数。指数前面可以放置正好或负号,指数表示将与尾数相乘的 10 的幂。因此,在常量 2.25e-3 中,2.25 是尾数值,而 -3 是指数值。该常量表示值 2.25*10 的 -3 次方,或 0.00225。BTW,用于分隔尾数和指数的字母 e,可用大写字母,也可用小写字母。

     要用科学计数法显示值,应该在 NSLog 格式字符串中指定格式字符 %e。使用 NSLog 格式字符串 %g 允许 NSLog 确定使用常用的浮点计数法还是使用科学计数法来显示浮点值。这一决定取决于指数的值:如果该值小于 -4 或大于 5,采用 %e (科学计数法)表示,否则采用 %f (浮点计数法)。

     十六进制的浮点常量包括前导的 0x 或 0X,后面紧跟一个或多个十进制或十六进制数字,再后是 p 或 P,最后是可以带负号的二进制指数。例如,0x0.3p10 表示的值为 3/16*2 的 10 次方 = 192。

今天 Mike 要和大家聊下在 Objective-C 中的 int 数据类型,整数常量由一个或多个数字的序列组成。序列前的负号表示该值是一个负数。值 168,-12 和 0 都是合法的整数常量。数字中间不允许插入空格,大于 999 的值不能用逗号来表示(因此,值 15,000 是个非法的整数常量,它必须写成 15000)。

     在 Objective-C 中存在两种特殊的格式,它们用一种非十进的方式来表示整数常量。如果整型值的第一位是0,那么这个整数将用八进制计数法来表示,就是说基数8来表示。在这种情况下,该值的其余位必须是合法的八进制数字,也就是 0 到 7 之间的数字。因此在 Objective-C 中以八进制表示的值 50 (等价于十进制的值40),表示方式为 050。与此类似,八进制的 0177 表示十进制的值 127(1*64+7*8+7)。通过在NSLog调用的格式字符串中使用格式符号%o,可在终端上用八进制显示整数值。在这种情况下,用八进制显示的值不带有前导 0,而格式符号 %#o 将在八进制值的签名显示前导 0。

     如果整型常量以 0 和字母 x (无论是小写字母还是大写字母) 开头,那么这个值都将用十六进制 (以16为基数) 计数法来表示。紧跟在字母 x 后的是十六进制值的数字,它可由 0 到 9 之间的数字和 a 到 f (或A到F)之间的字母组成。字母表示的数字分别为 10 到 15。因此,要给名为 rgbColor 的整型常量指派十六进制的值FFEF0D,可使用以下语句:

     rgbColor = FFEF0D;

     格式符号 %x 将用十六进制格式显示一个值,该值不带前导的 0x,并用 a 到 f 之间的小写字符表示十六进制数字。要使用前导 0x 显示该值,使用格式字符 %#x,如下所示:

     NSLog("Color is %#x\n", rgbColor);

     %X 或 %#X 中的大写字母 X,可用于显示前导的 x,而随后用大写字母表示的十六进制数字。
     每个值,不管是字符,整数还是浮点数字,都有与其对应的值域。这个值域与存储特定类型的值而分配的内存量有关。一般来说,在语言中没有规定这个量,它通常依赖于所运行的计算机,因此叫做设备或机器相关量。例如,一个整数可在计算机上占用 32 位,或者可以使用 64 位存储。
     永远不要编写假定数据类型大小的程序。然而,要保证为每种基本数据类型留出最小数量的内存。例如,要保证整型值存储在 32 位中。

     十进制就是之前提到过的 %i,这里一笔带过。

     int类型就说到这里为止,接下来博主Mike将把Objective-C数据类型和常量一文中提及的 float,double,char 类型做逐一介绍。

  类型 double 双精度与 类型float 非常相似,而在float变量所提供的值域不能满足要求时,就要使用 double 变量。声明为 double 类型的变量可存储的位数大概是 float 变量所存储的两倍多。大多数计算机使用 64 位来表示 double 值。

     除非另有说明,否则,Objective-C 编译器将所有浮点常量均看作 double 值。要清楚地表示 float 常量,需要再数字的尾部添加一个 f 或 F,例如:

     12.8f

     显示 double 值的方法和显示 float 值的方法相同,同样也是格式符号 %f,%e,%g,具体说明请参见 float 部分。

     关于数值的三大基本数据类型到此结束,Mike 最后需要介绍的就是 char类型。

最后一个 基本数据类型 char 可储存单个字符。将字符放入一对单引号中就能得到字符常量。因此,'a',';' 和 '0' 都是合法的字符常量。第一个常量表示字母 a,第二个表示分号,第三个表示字符 0,它并不等同于数字 0。不要把字符常量和 C 风格的字符串混为一谈,字符常量是放在单引号中的单个字符,而字符串则是放在双引号中的任意个数的字符。前面有 @ 字符并且放在双引号中的字符串是 NSString 字符串对象。
 
     字符常量 '\n' (即换行符)是一个合法的字符常量,尽管它似乎与前面提到的规则矛盾。出现这种情况的原因是反斜杠是 Objective-C 系统中的特殊符号,实际上并不把它看成一个字符。换句话说,Objective-C 编译器将字符 '\n' 看作单个字符,尽管它实际上由两个字符组成。在 NSLog 调用中可以使用 %c,以便显示 char 变量的值。

分享到:
评论

相关推荐

    pandas-1.3.5-cp37-cp37m-macosx_10_9_x86_64.zip

    pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。

    基于java的大学生兼职信息系统答辩PPT.pptx

    基于java的大学生兼职信息系统答辩PPT.pptx

    基于java的乐校园二手书交易管理系统答辩PPT.pptx

    基于java的乐校园二手书交易管理系统答辩PPT.pptx

    tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl

    tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl

    Android Studio Ladybug(android-studio-2024.2.1.10-mac.zip.002)

    Android Studio Ladybug 2024.2.1(android-studio-2024.2.1.10-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/89954174 part2: https://download.csdn.net/download/weixin_43800734/89954175

    基于ssm框架+mysql+jsp实现的监考安排与查询系统

    有学生和教师两种角色 登录和注册模块 考场信息模块 考试信息模块 点我收藏 功能 监考安排模块 考场类型模块 系统公告模块 个人中心模块: 1、修改个人信息,可以上传图片 2、我的收藏列表 账号管理模块 服务模块 eclipse或者idea 均可以运行 jdk1.8 apache-maven-3.6 mysql5.7及以上 tomcat 8.0及以上版本

    tornado-6.1b2-cp38-cp38-macosx_10_9_x86_64.whl

    tornado-6.1b2-cp38-cp38-macosx_10_9_x86_64.whl

    Android Studio Ladybug(android-studio-2024.2.1.10-mac.zip.001)

    Android Studio Ladybug 2024.2.1(android-studio-2024.2.1.10-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/89954174 part2: https://download.csdn.net/download/weixin_43800734/89954175

    基于MATLAB车牌识别代码实现代码【含界面GUI】.zip

    matlab

    基于java的毕业生就业信息管理系统答辩PPT.pptx

    基于java的毕业生就业信息管理系统答辩PPT.pptx

    基于Web的毕业设计选题系统的设计与实现(springboot+vue+mysql+说明文档).zip

    随着高等教育的普及和毕业设计的日益重要,为了方便教师、学生和管理员进行毕业设计的选题和管理,我们开发了这款基于Web的毕业设计选题系统。 该系统主要包括教师管理、院系管理、学生管理等多个模块。在教师管理模块中,管理员可以新增、删除教师信息,并查看教师的详细资料,方便进行教师资源的分配和管理。院系管理模块则允许管理员对各个院系的信息进行管理和维护,确保信息的准确性和完整性。 学生管理模块是系统的核心之一,它提供了学生选题、任务书管理、开题报告管理、开题成绩管理等功能。学生可以在此模块中进行毕业设计的选题,并上传任务书和开题报告,管理员和教师则可以对学生的报告进行审阅和评分。 此外,系统还具备课题分类管理和课题信息管理功能,方便对毕业设计课题进行分类和归档,提高管理效率。在线留言功能则为学生、教师和管理员提供了一个交流互动的平台,可以就毕业设计相关问题进行讨论和解答。 整个系统设计简洁明了,操作便捷,大大提高了毕业设计的选题和管理效率,为高等教育的发展做出了积极贡献。

    机器学习(预测模型):2000年至2015年期间193个国家的预期寿命和相关健康因素的数据

    这个数据集来自世界卫生组织(WHO),包含了2000年至2015年期间193个国家的预期寿命和相关健康因素的数据。它提供了一个全面的视角,用于分析影响全球人口预期寿命的多种因素。数据集涵盖了从婴儿死亡率、GDP、BMI到免疫接种覆盖率等多个维度,为研究者提供了丰富的信息来探索和预测预期寿命。 该数据集的特点在于其跨国家的比较性,使得研究者能够识别出不同国家之间预期寿命的差异,并分析这些差异背后的原因。数据集包含22个特征列和2938行数据,涉及的变量被分为几个大类:免疫相关因素、死亡因素、经济因素和社会因素。这些数据不仅有助于了解全球健康趋势,还可以辅助制定公共卫生政策和社会福利计划。 数据集的处理包括对缺失值的处理、数据类型转换以及去重等步骤,以确保数据的准确性和可靠性。研究者可以使用这个数据集来探索如教育、健康习惯、生活方式等因素如何影响人们的寿命,以及不同国家的经济发展水平如何与预期寿命相关联。此外,数据集还可以用于预测模型的构建,通过回归分析等统计方法来预测预期寿命。 总的来说,这个数据集是研究全球健康和预期寿命变化的宝贵资源,它不仅提供了历史数据,还为未来的研究和政策制

    基于微信小程序的高校毕业论文管理系统小程序答辩PPT.pptx

    基于微信小程序的高校毕业论文管理系统小程序答辩PPT.pptx

    基于java的超市 Pos 收银管理系统答辩PPT.pptx

    基于java的超市 Pos 收银管理系统答辩PPT.pptx

    基于java的网上报名系统答辩PPT.pptx

    基于java的网上报名系统答辩PPT.pptx

    基于java的网上书城答辩PPT.pptx

    基于java的网上书城答辩PPT.pptx

    婚恋网站 SSM毕业设计 附带论文.zip

    婚恋网站 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B

    基于java的戒烟网站答辩PPT.pptx

    基于java的戒烟网站答辩PPT.pptx

    基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx

    基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx

    机器学习(预测模型):自行车共享使用情况的数据集

    Capital Bikeshare 数据集是一个包含从2020年5月到2024年8月的自行车共享使用情况的数据集。这个数据集记录了华盛顿特区Capital Bikeshare项目中自行车的租赁模式,包括了骑行的持续时间、开始和结束日期时间、起始和结束站点、使用的自行车编号、用户类型(注册会员或临时用户)等信息。这些数据可以帮助分析和预测自行车共享系统的需求模式,以及了解用户行为和偏好。 数据集的特点包括: 时间范围:覆盖了四年多的时间,提供了长期的数据观察。 细节丰富:包含了每次骑行的详细信息,如日期、时间、天气条件、季节等,有助于深入分析。 用户分类:数据中区分了注册用户和临时用户,可以分析不同用户群体的使用习惯。 天气和季节因素:包含了天气情况和季节信息,可以研究这些因素对骑行需求的影响。 通过分析这个数据集,可以得出关于自行车共享使用模式的多种见解,比如一天中不同时间段的使用高峰、不同天气条件下的使用差异、季节性变化对骑行需求的影响等。这些信息对于城市规划者、交通管理者以及自行车共享服务提供商来说都是非常宝贵的,可以帮助他们优化服务、提高效率和满足用户需求。同时,这个数据集也

Global site tag (gtag.js) - Google Analytics