在 Objective-C 中,任何数字、单个字符或者字符串通常都成为常量。
每一个值,不管是字符、整数还是浮点数字,都有与其对应的值域,这个值域与存储特定类型的值而分配的内存有关。一般来说,语言中没有规定这个量,它通常依赖于所运行的计算机,因此叫做设备或机器相关量。
这也是告诉我们,做开发时,尽量不要去假定数据类型的大小。
id 类型
id 数据类型可以存储任何类型的对象,它是 OC 中十分重要的特性,是多态和动态绑定的基础。
-(id) newObject: (int) type
{
...
}
基本数据类型
类型 | 实例常量 | NSLog 字符 |
---|---|---|
char | 'a'、'\n' | %c |
short int | - | %hi、%hx、%ho |
unsigned short int | - | %hu、%hx、%ho |
int | 12、-97、0xFFE0、0177 | %i、%x、%o |
unsigned int | 12u、100U、0XFFu | %u、%x、%o |
long int | 12L, -2001, 0xffffL | %li, %lx, %lo |
unsigned long int | 12UL, 100ul, 0xffeeUL | %lu, %lx, %lo |
long long int | 0xe5e5e5e5LL, 500ll | %lli, %llx, &llo |
unsigned long long int | 12ull, 0xffeeULL | %llu, %llx, %llo |
float | 12.34f, 3.1e-5f, 0x1.5p10, 0x1P-1 | %f, %e, %g, %a |
double | 12.34、3.1e-5、0x.1p3 | %f、%e、%g、%a |
long double | 12.34L、3.1e-5l | %Lf、$Le、%Lg |
id | nil | %p |
基本数据类型长度
NSLog(@"The size of an int is: %lu bytes.",sizeof(int)); NSLog(@"The size of a short int is: %lu bytes.",sizeof(short int)); NSLog(@"The size of a long int is: %lu bytes.",sizeof(long int)); NSLog(@"The size of a char is: %lu bytes.",sizeof(char)); NSLog(@"The size of a float is: %lu bytes.",sizeof(float)); NSLog(@"The size of a double is: %lu bytes.",sizeof(double)); NSLog(@"The size of a bool is: %lu bytes.",sizeof(bool));
算数表达式
在 OC 中,只要将浮点值赋给整形变量,数字的小数部分都将被删除。把整型变量指派给浮点变量不会引起数值的任何改变。
算数表达式的两点规则
- 当表达式中的两个运算数是整数(),该运算就将在整数运算规则下进行。因此,由运算产生的任何小数部分都将被删除,即便将结果指配给一个浮点变量也是如此。
- 当表达式中的两个运算数有一个是浮点变量或常量,那么这一运算将作为浮点运算来处理。
与其它语言一样,(float) a 可作为一个强制类型转换。用法如下:
OC 支持 op= 这种语法,op 可以是任何算术运算符,包括 +、-、*、/ 和 %。此外,op 还可以是任何用于移位和屏蔽操作的运算符。
位运算符
符号 | 运算 | 符号 | 运算 |
& | 按位与 | ~ | 一次求反 |
| | 按位或 | << | 左移位 |
^ | 按位异或 | >> | 右移位 |