#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;
}
为什么会这样?这两种情况有什么不同?
答案 0 :(得分:12)
sizeof
需要括号。它们是表达式的可选项。
您的代码将成为:
printf("\nsize of int : %zu", sizeof(int));
感谢@Grijesh,我还为size_t
使用了正确的格式说明符。如果此格式说明符导致问题(可能与Windows有关),那么下一个最好的可能是%lu
。
答案 1 :(得分:3)
你忘记了brackets()
。当您使用sizeof
类型时需要括号。试试这个:
printf("\nsize of int : %zu", sizeof(int));
当微软编译器中没有%lu
时,您也可以使用格式说明符%zu
。
答案 2 :(得分:1)
sizeof
运算符用于确定指定数据类型在内存中占用的空间量。要使用sizeof,关键字“sizeof”后跟类型名称或表达式(可能只是变量名称)。 如果使用类型名称,则必须始终括在括号中,,而可以使用括号指定表达式。
char c;
printf("%zu,%zu\n", sizeof c, sizeof (int));