Visual Studio中以波浪线提示错误,但程序可正常运行:
代码为:
printf("sizeof(int) %d\n", sizeof(int));
printf("sizeof(long) %d\n", sizeof(long));
1. 提示很明确,显示我们将一个64位的无符号整型作为第二个参数传入了printf();
2. 查阅资料,可知:
占位符%d在格式化输入输出中代表int (4bytes),
%ld代表long int (>=4bytes),
%lld代表long long int (8bytes);
3. 问题出在sizeof上,它返回的是一个64位 (8bytes)的无符号整型,所以占位符应该填%lld.
即改为:
printf("sizeof(int) %lld\n", sizeof(int));
printf("sizeof(long) %lld\n", sizeof(long));
PS: sizeof不是函数,而是单目运算符,C/C++语言编译器在预编译阶段的时候就已经处理完了sizeof的问题,也就是说sizeof类似于宏定义.
sizeof 一般形式为:sizeof(object),也可以写作 sizeof var_char,不过大多数开发者习惯使用sizeof(),其含义是:求出对象在计算机内存中所占用的字节数.