ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

各种数据类型的长度

各种数据类型的长度 1.sizeof操作符sizeof是一个关键字专门用来计算sizeof的操作数的类型长度的存储的数据范围就有所差异。sizeof操作符的操作数可以是类型也可是变量或者表达式。sizeof(类型) sizeof 表达式注意sizeof的操作数如果不是类型是表达式的时候可以省略后边的括号如上图所示sizeof 运算符的返回值C语⾔只规定是无符号整数并没有规定具体的类型而是留给系统自己去决定 sizeof 到底返回什么类型。不同的系统中返回值的类型有可能是unsigned int 也有可能是 unsigned long 甚⾄是 unsigned long long 对应的 printf() 占位符分别是 %u 、 %lu 和 %llu 。这样不利于程序的可移植性。因此C语言提供了⼀个解决方法创造了⼀个类型别名 size_t 用来统⼀表示sizeof 的返回值类型。对应当前系统的 sizeof 的返回值类型可能是 unsigned int 也可能是 unsigned long long 。2.数据类型长度//sizeof计算的结果是size_t类型的size_t类型的数据打印使用%zu #include stdio.h int main() { printf(zu\n,sizeof(char)); printf(zu\n,sizeof(_Bool)); printf(zu\n,sizeof(short)); printf(zu\n,sizeof(int)); printf(zu\n,sizeof(long)); printf(zu\n,sizeof(long long)); printf(zu\n,sizeof(float)); printf(zu\n,sizeof(double)); printf(zu\n,sizeof(long double)); return 0; }所计算出的结果分别是112448488单位为字节。那么这时候便可能会有一个疑问字节到底是什么呢首先假设我们在计算机中想要存储一个二进制位当然我们知道计算机能理解的是二进制二进制中经常有1或者是0那么想把1存储起来需要一块空间同理想把0存储起来也需要一块空间那么存1或者0的这样一个空间的大小就叫做1bit位一个bit位就可以存一个二进制位那么8个bit位放在一起这样的一个空间就叫做一个字节也是char和bool的长度。那么此时又有一个问题long是长整型为什么字节数与int整形的字节数相同呢在c语言标准中规定sizeof(long)sizeof(int)但long的长度没有具体的规定有时候是4有时候是8在不同的环境中字节数不一定相同。同时sizeof(long double)sizeof(double)。3.sizeof中表达式不计算举一个例子此时最关键的一个点是sizeof中的表达式是不计算的。那么此时我们可以假设s被赋值如果赋值成功那么s就变成了7但是当我们打印s的时候会发现s的值还是10所以527赋值给s这个表达式并没有计算所以可以得出sizeof里面放的表达式是不会真实计算的。如果是这样那么可能会想问既然不会真实计算那么sizeof如何计算长度呢其实是通过类型来推导的。那么是怎么推导出2的呢a是int类型的且2也是int类型的如果要计算的话那就是两个int相加的结果也是int类型的而现在要把算出的结果赋给s且s是short类型的现在我们要将int的结果放入s中所以这个表达式的结果是s说了算而最终的结果是取决于s的类型且s是short类型所以求出长度是2。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表