源代码为:
#include "stdio.h"
int main() {
int a = 01000; /*8进制*/
printf("%d\n",sizeof(a));
}
1, 虽然提示上面的错误,但能输出结果:4 ,说明int 是4个bytes,共32位;
2, 提示已经很明确,说你将一个64位 (8bytes)的无符号整型作为printf的第二个参数传入;
3, 查资料占位符%d在格式化输入输出中代表int(4bytes),%ld代表long int(>=4bytes), %lld代表long long int (8bytes);
4,问题出在sizeof上,它返回的是一个64位 (8bytes)的无符号整型,所以占位符应该是%lld
5,补充:sizeof不是函数,而是单目运算符,C/C++语言编译器在预编译阶段的时候就已经处理完了sizeof的问题,也就是说sizeof类似于宏定义,
sizeof 一般形式为:sizeof(object),也可以sizeof var_char,不过大部分programer习惯用sizeof(),其运算符的含义是:求出对象在计算机内存中所占用的字节数。
正确代码:
#include "stdio.h"
int main() {
int a = 01000; /*8进制*/
printf("%lld\n",sizeof(a));
}
本文深入探讨了C语言中sizeof运算符的使用及其常见误区,解析了在不同数据类型下sizeof的返回值,并提供了正确的代码示例。通过本文,读者可以理解如何正确使用sizeof来获取变量在内存中占用的字节数。

1856

被折叠的 条评论
为什么被折叠?



