int main () {
/*
整型数据
short
短整型 -32768~32767
-2的15次方到2的15次方—1
int
整型 -2147483648~2147483647
-2的31次方到2的31次方—1
正负21亿
long
-2的63次方到2的63次方—1
-9223 3720 3685 4775 808 ~
9233 3720 3685 4775 807
1.打印long类型数据时
最好采用%ld进行打印
%d只能打印在int范围内的数据
如果超过int范围
就需要使用%ld进行打印
2.在计算long类型数据时
需要首个数据末尾加上L或l
以保证数据在超过int范围时
不会出现溢出问题
并且也是提醒底层运行环境
采用long类型范围进行计算
signed
用于定义有符号的数据
即正负 通常情况下可以省略不写
unsigned
用于定义无符号的数据即非负
数据的最小值从0开始
1.int类型数据
由于从0变成极大值时
超过了正常的的无符号int范围
所以在打印时需采用%u进行打印
才能正常显示无符号的数据
2.long类型数据
在采用%u打印时
由于long类型也发生了溢出问题
所以所以想展现出正常数据
需采用%lu进行打印
注意:
1.除法问题
整型数据在进行除法运算时
会只保留整数部分
直接舍弃小数部分
而不是采用四舍五入的常规数学逻辑
2.溢出问题
当数据计算到极值情况时
比极大值还大会向极小值进行反转
比极小值还小会向极大值进行反转
*/
short a = 32767;
printf("a = %d\n", a);
a = a + 1;
printf("a = %d\n", a);
int b = -2147483648;
printf("b = %d\n", b);
b = b - 1;
printf("b = %d\n", b);
long c = 2147483647;
printf("c = %d\n", c);
c = c + 1;
printf("c = %ld\n", c);
c = 2147483647 + 1L;
printf("c = %ld\n", c);
c = -9223372036854775808;
printf("c = %ld\n", c);
c = c - 1;
printf("c = %ld\n", c);
unsigned short d = 0;
printf("d = %d\n", d);
d = d - 1;
printf("d = %d\n", d);
d = 0 - 1;
printf("d = %d\n", d);
unsigned int e = 0;
e = e - 1;
printf("e = %d\n", e);
printf("e = %ud\n", e);
unsigned long f = 0;
f = f - 1;
printf("f = %u\n", f);
printf("f = %lu\n", f);
int a0 = 29, a1 = 10;
int a2 = a0 / a1;
printf("a2 = %d\n", a2);
return 0;
}