c – sizeof运算符给出错误

#include<stdio.h>
int main()
{
printf("\nsize of int : %d", sizeof int);
return 0;
}

正在返回错误

error: expected expression before ‘int’ 

用C编译时

expected primary-expression before ‘int’

用C编译,但以下代码工作得很好.

#include<stdio.h>
int main()
{
int b;
printf("\nsize of int : %d", sizeof b);
;
return 0;
}

为什么会这样?这两种情况有什么不同?

最佳答案
当与类型一起使用时,sizeof需要括号.它们是表达式的可选项.

您的代码将变为:

printf("\nsize of int : %zu", sizeof(int));

感谢@Grijesh,我还为size_t使用了正确的格式说明符.如果这个格式说明符导致问题(可能与Windows有关),那么下一个最好的可能是%lu.

转载注明原文:c – sizeof运算符给出错误 - 代码日志