在介绍基本数据类型之前,先扯点别的,OC中的所有变量都要求先声明后使用,声明变量时需要指定数据类型,也要指定变量名,说起变量名,就要先看一下标识符规则,标识符就是用于给程序中的变量、类、方法命名的符号,标识符使用有以下规则:1.标识符可以由字母、数字、下划线和美元符组成,不能以数字开头。2.标识符不能是OC中的关键字,但可以包含关键字。3.标识符不能包含空格。3.标识符不能包含除美元符($)外的其他特殊符号。
OC的基本数据类型包括:整型、字符型、浮点型、布尔型、枚举型。一、整型整型包含以下几种类型1.short(短整型):内存中通常占2字节,即16位,取值范围-32768 - +32767。2.int(整型):通常占4字节,取值范围-2147483648 - 21474836473.long(长整型):通常占8字节4.long long(长整型):通常占8字节关于内存中占用的字节数,OC中并没有硬性的规定,只是需要字节数符合以下条件:short <= int <= long<= long long因此在我们实际开发时需要注意在mac还是在ios系统上到底是占多大的空间,以免数据溢出。
// 基本数据类型
int a = 10;
//下面的数已经超出了int的取值范围,编译器会提出警告
int b = 10000000000000;
NSLog(@"%d",b);
//而这个数在long long的取值范围内,所以不会溢出
long long c =1000000000000;
NSLog(@"%lld",c);
//mac系统下输出各种类型占用的位数
//输出:short:2 int:4 long:8 long long:8
NSLog(@"short:%lu int:%lu long:%lu long long:%lu",sizeof(short),sizeof(int),sizeof(long),sizeof(long long));
整型有3种进制表示方式:十进制,八进制,十六进制
//八进制,以0开头
int i8 = 010;
//十进制
int i10 = 10;
//十六进制,以0x或者0X开头
int i16 = 0x10;
//8 10 16
NSLog(@"%d %d %d",i8,i10,i16);
整型前加上unsigned关键字后,将它变成无符号整型,最高位不是符号位,而是数值位。无符号整数不能表示负数,但是表示范围大了。
short s = 32768;
unsigned short us = 32768;
//输出-32768,32768,说明正整数表示范围比原先大了
NSLog(@"%d,%u",s,us);
二、字符型字符型在OC中只占用一个字节,OC字符变量不支持中文字符,字符需要使用’’包起来,char类型也可以看作整型值来使用,它是一个8位无符号整数,取值范围0-255。另外可以通过转义字符表示特殊字符常量:
转义字符 | 说明 |
\b | 退格 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
\" | 双引号 |
\' | 单引号 |
\\ | 反斜杠 |
三、浮点型
浮点类型包括float、double和long double,float占用4字节,double占8字节,long double占16字节。OC中浮点数表示方法有两种,一种是包含小数点的简单的浮点数,另一种是科学计数法形式的浮点数
//利用浮点数计算类型取值范围
int i0 =-1/0.0;
int i1 = 1/0.0;
//输出:int型取值范围:-2147483648-2147483647
NSLog(@"int型取值范围:%d-%d",i0,i1);
四、布尔型OC中BOOL类型有两个值:YES和NO
BOOL b1 = YES;
if (b1) {
NSLog(@"%d",b1);
}
BOOL b1 = 10;
//输出: YES: 10
if (b1) {
NSLog(@"YES: %d",b1);
}else{
NSLog(@"NO: %d",b1);
}
BOOL b1 = 768;
//输出: NO: 0
if (b1) {
NSLog(@"YES: %d",b1);
}else{
NSLog(@"NO: %d",b1);
}
注意:不要以为所有的非0整数变量赋给BOOL类型就一定得到YES,上面的768的出的就是NO,BOOL类型实质上就是signed char。
五、枚举型一个变量只有几种可能的值,这个变量就可以定义为枚举变量
enum season {spring,summer,fall,winter};
enum season mySeason = spring;
mySeason = summer;
六、格式字符在NSLog函数中我们使用了很多格式字符,如%d,%lu等。我们这里将介绍NSLog支持的格式字符。
格式字符 | 说明 |
d | 以带符号的十进制形式输出整数 |
o | 以八进制无符号形式输出整数 |
x | 以十六进制无符号形式输出整数 |
u | 以无符号十进制形式输出整数 |
c | 以字符形式输出,只输出一个字符 |
s | 输出c风格的字符串 |
f | 以小数形式输出浮点数,默认输出6位小数 |
e | 以指数形式输出浮点数,数字部分默认输出6位小数 |
g | 自动选用%f和%e,保证输出宽度较短的格式,而且不会输出无意义的0 |
p | 以十六进制形式输出指针变量所代表的地址值 |
@ | 输出OC的对象 |
%与格式字符之间可以插入以下附加符号
格式字符 | 说明 |
l | 可在格式字符d、o、x、u之前,用于输出长整型整数,也可在f、e、g之前,用书输出长浮点型数 |
m(m代表一个正整数) | 指定输出数据所占的最小宽度 |
.n(n代表一个正整数) | 对于浮点数,表示输出n位小数,对于字符串,表示截取的字符个数 |
- | 表示输出的字符向左边对齐 |