本文有删节:
整形数据(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。这种类型是一种通用的类型可以是各种对象不管是什么类,可以是一个类的实例也可以是类对象本身。
对于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是一种面向对象的编程语言,它以其独特的动态性而闻名。这种动态性体现在它能够尽可能地将决策过程推迟到运行时执行,而不是在编译或链接阶段。因此...
第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等。这部分为读者打下了坚实的语言基础,适合编程初学者...
8. **Foundation框架与AppKit/UIKit**:Objective-C开发中常用的Foundation框架提供了基本的数据类型和系统服务,而AppKit(macOS)和UIKit(iOS)则提供了图形用户界面的组件和功能。 9. **Cocoa与Cocoa Touch**:...
Objective-C 2.0 运行时系统编程指南详细介绍了Objective-C语言的关键特性之一——运行时系统的工作原理。通过深入学习这些内容,开发者可以更好地理解Objective-C是如何在运行时解决各种问题的,从而有效地利用这些...
- C-style枚举在Objective-C 2.0中得到了增强,支持类型安全和命名空间。 - 使用位标志(Bitmasking)可以有效地组合多个状态或选项。 9. **GCD(Grand Central Dispatch)与并发**: - GCD是Apple的多线程解决...
- **数据类型与表达式**:Objective-C支持多种数据类型,包括基本类型(如int、float等)以及自定义类型。第四章将详细介绍这些数据类型以及如何在程序中使用它们构建复杂的表达式。 - **程序结构**:Objective-C...
Objective-C 2.0是一种强大的面向对象编程语言,主要用于苹果的iOS和macOS平台开发。它是C语言的一个超集,融入了Smalltalk的关键特性,如消息传递和动态类型。本篇将深入探讨Objective-C 2.0的核心概念,并基于提供...
Objective-C2.0是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,融合了Smalltalk的动态特性,广泛应用于iOS和Mac OS X操作系统。本资料集中的"Objective-C2.0程序设计习题官方答案"显然是针对学习...
### 关于Objective-C 2.0编程语言的关键知识点 #### 一、Objective-C 2.0简介 Objective-C 2.0是一种通用的面向对象的编程语言,它是在早期版本的基础上进行了一系列重大改进的结果。Objective-C 2.0是苹果公司...
### Objective-C 2.0 运行时系统编程指南知识点详解 #### 概述 Objective-C 2.0 的运行时系统是该语言的核心组成部分之一,它负责在程序执行过程中处理许多关键操作,如方法调用、类信息的管理、消息转发等。深入...
Objective-C 2.0 兼容C语言的所有特性,这意味着开发者可以在Objective-C程序中直接使用C语言的语法和数据类型。这种兼容性极大地降低了学习成本,并允许开发者在必要时使用C语言的库和API。 ##### 3. 垃圾回收机制...
Foundation框架是Objective-C的基础,包含了基本数据类型、集合类(如NSArray, NSDictionary)以及线程和文件I/O等系统服务。UIKit框架则是iOS应用程序的主要构建块,提供了用户界面元素和事件处理。 在学习...
Objective-C 2.0 是一种通用的面向对象的编程语言,它结合了C语言的基础特性和Smalltalk的对象模型。Objective-C 2.0 由 Apple Inc. 开发并维护,广泛应用于开发 Mac OS X 和 iOS 应用程序。 #### 二、Objective-C ...
Objective-C是在C语言的基础上扩展而成的一种编程语言,它结合了C语言的强大特性和Smalltalk语言的面向对象特性。Objective-C 2.0版本进一步增强了语言的性能,并引入了一些新特性,比如更快的编译速度、更好的错误...
### Objective-C 2.0 与 Cocoa Foundation:深入学习指南 #### 第 1 章:Objective-C 与 Cocoa Foundation 入门 ##### 1.1 Objective-C 的基础概述 Objective-C 是一种面向对象的编程语言,它是在 C 语言的基础上...
全书共分为四大部分:第一部分全面讲解了objective-c语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了foundation...