- 整数是没有小数点的数,一个完整的数,适合解读计数这类问题
- 为了解读数字尺寸的不同需求,整数变量可以有不同的大小,整数变量都会占用定位数的内存,用于保存数学,能够保存的数学就越大8位,16位,32位,64位
//无符号32位整数
UInt32 x;
//有符号16位整数
SInt16 y;
//8位
char a;
//通常是16位
short b;
//通常是32位
int c;
//32位或者64位
long d;
//64位
long long e;
- 以上整数类型所占的位数是平台相关的,平台是指某种操作系统和某种特定计算机或移动设备的组合
用于显示整数的格式说明符
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
int x = 255;
printf("x is %d. \n",x);
}
return 0;
}
- 这里的%d会将整数按十进制输出,此外,还可以将整数按八进制数和十六进制数输出
- 示例更改
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
int x = 255;
printf("x is %d. \n",x);
printf("In octal,x is %o. \n", x);
printf("In hexadcimal,x is %x. \n", x);
}
return 0;
}
- 针对位数很多的整数,是否有特定的格式说明符?对这类大整数,可以在%和换字符之间加入l或ll。修改代码,将Int改为long
int main(int argc, const char * argv[]) {
@autoreleasepool {
long x = 255;
printf("x is %ld. \n",x);
printf("In octal,x is %lo. \n", x);
printf("In hexadcimal,x is %lx. \n", x);
}
return 0;
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
unsigned x = 255;
printf("x is %u. \n",x);
printf("In octal,x is %o. \n", x);
printf("In hexadcimal,x is %x. \n", x);
}
return 0;
}
整数运算符
int main(int argc, const char * argv[]) {
@autoreleasepool {
printf("3+3*5*5*2 = %d\n", 3+3*5*5*2);
}
return 0;
}
整数除法
int main(int argc, const char * argv[]) {
@autoreleasepool {
printf("3 * 3 + 5 * 2 = %d\n", 3 * 3 + 5 * 2);
printf("11 / 3 = %d\n",11 / 3);
}
return 0;
}
- 计算结果是应该是11 / 3 = 3.66666,不过这里输出的是3,因为一个整数除以另一个整数,得到的还是整数,系统将会计算相0的方向取整数
- 以上除法可以表达为“11除以3,得3,余2”
printf("11 / 3 = %d remainder of %d \n",11 / 3 ,11 % 3);
- 要是得到小数这样的结果,就要转换运算符,将Int类转化为Float类型
- 所谓转换运算符,其实就是需要转换的目标类型,但是要放在小括号,并写在需要转换的变量的左侧
printf("11 / 3.0 = %f\n", 11 / (float)3);
- 这样修改后会执行浮点数除法,而不是整数除法,所以结果是3.666667
NSInteger和NSUInterger
-
NSInteger以及NSUInterger类型在苹果库中被广泛使用
- 如果使用printf()来输出这两种类型的变量,请先将它们转换为对应的long类型。
- 代码示例
int main(int argc, const char * argv[]) {
@autoreleasepool {
int x = 5;
NSUInteger y = 6;
printf("Herer they are: %ld,%lu",(long)x,(unsigned long)y);
}
return 0;
}
赋值运算符
- 示例:如将 X 的值增加1,可以使用+运算符,然后计算结果赋值给x
-
int x = 5;
X = x + 1;
//执行后,x的值是6
- 这类运算的使用频率非常高,可是使用自增运算符将x所保存的增加为1;
-
int x = 5;
x++;
//执行后, x的值是6
- 此外,还可以使用自减运算符将变量的值减去1;
-
int x = 5;
x--;
//执行后, x的值是4
-
int x = 5;
,X = x + 5
; //执行后,x的值是10
-
int x = 5;
,x += 5
;//执行后,x 的值是10
- 如果计算是某个int数的绝对值,就不能使用运算符,而必须结束ads()函数
- 如果计算绝对值的整数是long类型,就要用labs()函数
printf("The adsolute value of -5 is %d\n",abs(-5));
浮点数
- 与整数一样,浮点数也有不同的尺寸类型,但不同的是,浮点数都是有符号的;
//32位
float g;
//64位
double h;
//128位
long double i;
用于显示浮点数的格式说明符
int main(int argc, const char * argv[]) {
@autoreleasepool {
double y = 123456.7789;
printf("y is %f\n",y);
printf("y is %e\n",y);
}
return 0;
}
- 代码中的%f会显示小数点后6位,通常不用显示这么多位,可以将小数点后的输出长度显示为2位
printf("y is %.2f\n",y); printf("y is %.2e\n",y);
数学代码库
- 如果要处理的更复杂的数学运算,就要用数学代码库,其中包含,三角函数,取近视值,求幂函数,求平方,立方根数
- 要使用这些函数,必须在文件顶部包含数学库的头文件
include <math.h>
网友评论