源代码为:
#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));
}
版权声明:本文为ACBC12345原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。