免费开源的iOS开发学习平台

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