sizeof运算符给出错误

时间:2014-04-03 12:33:39

标签: c++ c

#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;
}

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

3 个答案:

答案 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));