`
sogotobj
  • 浏览: 612697 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Objective-C 2.0数据类型

 
阅读更多

本文有删节:

整形数据(int)

Objective-C中的int型可以存储正的或者负的整数(即没有小数位),整形(int)的位数依赖于目标机,在编译期决定,一般是32位或者64位,这个取决于程序运行平台的CPU。值得注意的是,有时候操作系统也会起到作用,比如,CPU是64位,但是跑的操作系统是32位的,那么int只能是32位的。

在32位系统上,无符号的整形(unsigned int)的范围是0到4294967295。在64位系统上,这个范围是0到18,446,744,073,709,551,615。对于有符号的整形,这两个范围分别为−2,147,483,648到+2,147,483,647和−9,223,372,036,854,775,808到+9,223,372,036,854,775,807。

所以,在写Objective-C的程序的时候,你唯一可以假设的是,int型至少是32位。

译者注:在iOS上,int是32位的。

缺省的情况下,int是使用十进制的数来进行赋值的,如果你想使用八进制进行赋值,请在数据前面加入一个0。如下所示:

int myoctal = 024;

同样的,0x开头的标识16进制:

int myhex = 0xFFA2;

字符型(char)

Objective-C的char类型是用来保存单个字符的,类似于英文字母,十进制的数字或者标点符合。下面是这样的例子:

char myChar = 'w';
char myChar = '2';
char myChar = ':';

转义字符

除了上面这些普通的字符,有时候我们需要一些特殊的字符来标识特殊的含义,比如回车换行,tab等,这些特殊的字符是以反斜杠'\'开头的,比如下面的这个就是标识回车换行:

char newline = '\n';

任何以反斜杠'\'开头的都是转义字符,那么我们如何在字符串中标识反斜杠那?答案是两个反斜杠,如下所示:

char myslash = '\\'; Assign a backslash to a variable
<style type="text/css"> <!-- --> </style>

下面是常用的转义字符的列表:

\a - Sound alert
\b - Backspace
\f - Form feed
\n - New line
\r - Carriage return
\t - Horizontal tab
\v - Vertical tab
\\ - Backslash
\" - Double quote (used when placing a double quote into a string declaration)
\' - Single quote (used when placing a double quote into a string declaration)

浮点类型(float)

float在Objective-C中标识浮点类型的数据,即有小数部分的数据,例如456.12。一般情况下,这样的数据被编译程序识别为另一种类型(Double,双浮点类型),所以在赋值给float类型的时候,在数据后面加上一个f即可,就像下面这个样子:

float myfloat = 123.432f

当我们表示一个很大的浮点数的时候,我们可以使用科学计数法,即后边跟一个eX,X标识一个数字,比如67.7 x 104可以表示成下面的样式:

float myfloat = 67.7e4

双精度浮点类型(double)

Objective-C中的double数据类型用来存储比float类型更大的数据,double这个词来自于它用来存储的bit大小是float的两倍,就像上一节提到的那样,浮点数据是一个double类型,除非它跟一个f来标识是一个float类型。

id类型

你会在本书后面的章节看到,Objective-C是一个面向对象的语言,面向对象语言是用类的对象来重用代码的,调用对象的方法被来实现逻辑功能,这些方法需要传入参数和返回一些值,这些类型可能也是一个对象,id就是一个通用的用来指向一个对象。

译者注:

在Objective-C中对象的标识符是一个单独的数据类型:id。这种类型是一种通用的类型可以是各种对象不管是什么类,可以是一个类的实例也可以是类对象本身。

1
id anObject;

对于Objective-C的面向对象结构,例如方法的返回值id代替int作为默认的返回值类型。(对于严格的C语言结构方法返回值的默认类型仍然是int)。

关键字nil被定义为空对象一个值为0的id。Id,nil和其他Objective-C基础类型都是在头文件objc/objc.h中定义的。

id被定义为一个对象数据结构的指针:

1
2
3
4
5
typedef struct objc_object {

 Class isa;

} *id;

每一个对象都有一个isa变量来表示它是哪个类的实例。由于类这个类型本身被定义为一个指针,因此isa变量经常被称为“isa 指针”。

1
typedef struct objc_class *Class;

布尔类型(BOOL)

就像其他语言一样,Objective-C也有一个用来保存true和false的数据类型,布尔类型,这个类型使用关键词_Bool或BOO来表示 ,下面的表示法都是合法的:

_Bool flag = 0;
BOOL secondflag = 1;

译者注:和C++里面的bool不一样,BOOL只是一个signed char,YES=1,NO=0,只是一个约束,实际上你可以付给BOOL,YES和NO以外的值,在使用其他的数赋给一个布尔类型的时候,只取低八位,那么就造成下面的问题,0x2300赋给一个布尔类型的时候,布尔类型的值是NO。大家一定要注意这个。

Objective-C中数据类型修饰符

目前位置,我们看到的都是Objective-C中的基本数据类型。在上面的数据类型的基础上,Objective-C还有一些修饰符来对这些数据类型进行扩张。.

long型

long用来扩展一个数据类型的数据范围,比如,下面的调用就是扩张了int型的数据:

long int mylargeint;

数据范围被扩张到何种程度是由系统决定的,所以在很多系统上,long int和int其实一样的。long同样可以用来修饰double型:

long double mydouble;

译者注:long可以在iOS中单独使用,相当于long int,但是它的大小还是32位的,如果你希望使用64位的数据,请使用long long。


long long型

你可以认为long long是一个更长的long,因此,程序中的long long总是64位的,long long只用来修饰int, long long int和long long相同。

long long int mylargeint;

short型

目前我们看到的都是增加存储空间的修饰符,那么相反的也有减少存储空间的修饰符,short,它只修饰int,short int是一个16位的整形,范围从−32,768到+32,767:

short int myshort;

有符号和无符号signed / unsigned

缺省的,一个整形是有符号的。换句话说,即编译器会认为一个整形变量会存储正数,也可能存的是负数。这样就限制了正负数的范围,比如,32位的整形的最大值在无符号的时候可以达到4,294,967,295。但是实际中,由于有负数的存在,所以它的范围就是−2,147,483,648到+2,147,483,647。如果我们知道一个整形从来不会被用来存储负数,那么我们可以声明它为无符号的,就是用unsigned修饰,它的范围就是0到+4,294,967,295。声明方式如下:

unsigned int myint;

上面的修饰符可以组合使用,比如声明一个无符合的短整形:

unsigned short int myint = 10;

注意在unsigned, signed, short和long 修饰整形的时候,关键词int可以省略,下面就是这样的例子:

short myint;
long myint;
unsigned myint;
signed myint;

小结

Objective-C在基本数据类型方面,是和其他语言一样的。

译者注:Objective-C是标准C的扩展,所以基本类型和C语言差不多,不过要注意布尔型,这个类型的定义是在C形成标准以前,所以就形成了现在的这个样子。

分享到:
评论

相关推荐

    Objective-C 2.0程序设计

    书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据 类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二 部分详细阐述了Foundation...

    《Objective-C2.0程序设计(原书第2版)》_中文完整版

    全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了Foundation...

    《Objective-C 2.0程序设计(原书第2版)》[PDF]

    全书共分为四大部分:第一部分全面讲解了objective-c语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了foundation...

    Objective-C2.0程序设计

    译者序 作者简介 技术审校人员简介 第1章 前言 1.1 本书的内容 1.2 本书的组织方式 1.3 致谢 第1部分 Objective-C语言 第2章 Objective-C程序设计 ...附录B Objective-C 2.0语言概览 附录C 地址簿源代码 附录D 资源

    Objective-C-2.0程序设计-第4章-数据类型和表达式PPT课件.ppt

    Objective-C-2.0程序设计-第4章-数据类型和表达式PPT课件.ppt

    Programming in Objective-C, 4th Edition

    全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了Foundation...

    [Objective-c程序设计].杨正洪等.扫描版

    前6章讲述Objective-C语言,包括数据类型、运算符、表达式、条件语句、循环语句、类、协议、继承、类别、编译预处理等内容。第7章到第10章讲述Objective-C的基础框架,以及文件操作、内存管理、数据保存等内容。第11...

    iPhone应用开发从入门到精通代码

    C的数据类型和表达式524.3.1 数据类型524.3.2 运算表达式544.4 Objective-C的循环语句554.4.1 for循环554.4.2 while循环564.4.3 do循环574.5 Objective-C的条件语句584.5.1 if语句584.5.2 switch语句594.5....

    GTK+2.0+中文教程.pdf

    在 2.0 版中,GLib 又加入这样一些新内容:构成 GTK 类层次基础的类型系统 (type system),在 GTK 中广泛使用的信号系统,对各 种不同平台的线程 API 进行抽象而得的一个线程 API,以及一个加载模块的工具。 作为...

    QLVideo:此软件包允许macOS Finder显示大多数类型的视频文件的缩略图,静态QuickLook预览,封面和元数据

    该软件包允许macOS Finder显示大多数类型的视频文件的缩略图,静态预览,封面和元数据。 macOS 10.9及更高版本上的QuickLook和Spotlight只能理解数量有限的媒体文件-多数是MPEG容器文件中的MPEG音频和视频编解码器...

Global site tag (gtag.js) - Google Analytics