分类:
基本类型:
C语言没有限制过 int 和 short int 多大,之规定了小于等于的关系,即short int 小于等于int
那么我们如何计算数据的大小呢?
C语言提供了一个运算符 sizeof sizeof运算符用于活的数据类型或表达式的长度
sizeof 使用规则
- sizeof(object); //sizeof(对象)
- sizeof(type_name); //sizeof(类型)
- sizeof object; //sizeof 对象
例1:
#include#define YEAR 2022 #define MONTH 1 #define DAY 2 #define WEATHER "晴天" int main() { int i; char j; float k; printf("size of int is %dn",sizeof(int)); printf("size of i is %dn",sizeof(i)); printf("size of char is %dn",sizeof(char)); printf("size of j is %dn",sizeof j); printf("size of float is %dn",sizeof(float)); printf("size of YEAR is %dn",sizeof YEAR); printf("size of WEATHER is %dn",sizeof WEATHER); return 0; }
运行结果:
例2:
#includeint main() { printf("size of int is %dn",sizeof(int)); printf("size of short int is %dn",sizeof(short int)); printf("size of long int is %dn",sizeof(long int)); printf("size of long long int is %dn",sizeof(long long int)); printf("size of char is %dn",sizeof(char)); printf("size of _Bool is %dn",sizeof(_Bool)); printf("size of float is %dn",sizeof(float)); printf("size of double is %dn",sizeof(double)); printf("size of long double is %dn",sizeof(long double)); return 0; }
运行结果
signed (有符号) VS unsigned(无符号)
比特位:CPU能读懂的最小单位,bit b
字节:内存机构的最小寻址单位,Byte B
关系:一个字节等于八个比特位 1 Byte = 8 bit
所以一个字节可以表示的最大数字就是11111111(二进制)=255(十进制)=FF(十六进制)
补充:
pow() 函数
功能:pow()函数用来求x的y次幂,然后将结果返回 原型为double pow(double x,double y);设输出为Z,Z=x^y 头文件:#include
例子:求32个字节代表多少?(2^32-1, 利用pow()函数计算)
#include#include int main() { int result = pow(2,32) - 1; printf("result = %dn",result); return 0; }
运行结果
对比计算器计算结果
我们发现两者不一致,编译器发出警告
E:c++1powmain.c|6|warning: overflow in conversion from ‘double’ to ‘int’ changes value from ‘4.294967295e+9’ to ‘2147483647’ [-Woverflow]|
意思是有数据溢出,因为我们直接用Int表示的是带符号位的整型,他的最高位用来表示数字的正负,所以我们这里应该使用无符号位的整型来表示。
修改代码
#include#include int main() { unsigned int result = pow(2,32) - 1; printf("result = %un",result); return 0; }
修改部分:
注意:无符号位的要用%u表示。
修改后运行结果:
运行结果发现与计算结果一直。



