OC数据类型:1-基本数据类型(int, float, char, BOOL)
Objective-C是在C语言基础上拓展出的新语言 ,所以它是完全兼容C语言的代码的,C语言中的基本数据类型如int、float、double和char在Objective-C中是完全可以正常使用的。除此之外,Objective-C还拓展了一些新的数据类型如BOOL、id、instancetype等。
1.int类型
整数常量由一个或多个数字的序列组成,序列前的负号表示该值是一个负值,数字中间不允许插入空格或逗号。例如:123、-56、2都是合法的整数常量,而23,000就是一个非法的整数常量。
一个int类型值的取值范围在不同的设备中是不相同的,在32位的操作系统中,一个int占用4个字节,32位;在64位的操作系统当中,一个int占用8个字节,64位,所以在64位的操作系统中,int的取值范围是大于32位操作系统的。
在开发过程中,格式化输出一个int型的整数时,可以使用 %d 或 %i,例如:
int main(int argc, const char * argv[]) {
@autoreleasepool {
int number = 10;
NSLog(@"%d", number);
}
return 0;
}
2.float类型
float类型可以存储包含小数位的数值。要区分浮点常量,可以看是否包含小数点。例如:2.、3.67、.23都是合法的浮点常量。float类型占用4个字节,32位。格式化输出时可以使用 %f 或者 %g。另外, %.2f表示保留2位小数,其他以此类推。
int main(int argc, const char * argv[]) {
@autoreleasepool {
float f = 10.1234;
NSLog(@"%f,%.2f", f,f);
}
return 0;
}
运行结果如下。默认情况下,使用%f打印float型的常量,取小数点后6位。
double类型和float类型十分相似,区别就在于它们的取值范围,因为double类型在内存里占用8个字节,64位,所以取值范围要比float大很多,但是使用方法都是一样的。
3.char类型
char类型的变量可以存储单个字符,将字符放入一对单引号中就可以得到一个字符常量。例如:'a'、'!'、'3'都是合法的字符常量,但字符'3'并不等于整数3,不能混淆。char类型占用1个字节。格式化输出使用 %c。
int main(int argc, const char * argv[]) {
@autoreleasepool {
char c = 'a';
NSLog(@"%c",c);
}
return 0;
}
4.BOOL类型
BOOL类型其实是由一种称为预处理程序的机制添加的。Objective-C 中的BOOL 实际上是一种对带符号的字符类型(signed char)的类型定义(typedef),它使用8位的存储空间。通过#define指令把YES定义为1,NO定义为0。Objective-C 并不会将BOOL作为仅能保存YES或NO值的真正布尔类型来处理。编译器仍将BOOL认作8位二进制数,YES 和 NO 值只是在习惯上的一种理解。例如, 给一个BOOL类型的变量赋值为23是可以编译成功的,编译器在处理过程中会将该变量认定为真,因为BOOL类型逻辑上来说是非零即为真。
- BOOL类型的本质
typedef signed char BOOL;
- BOOL类型变量取值
#define YES (BOOL)1
#define NO (BOOL)0
例如,我们定义两个BOOL类型的变量,并分别赋值以及打印。
int main(int argc, const char * argv[]) {
@autoreleasepool {
BOOL b1 = YES;
BOOL b2 = NO;
NSLog(@"b1:%d,b2:%d",b1,b2);
}
return 0;
}
示例代码
https://github.com/99ios/2.1.1