我发现很奇怪,我在使用sizeof int
时遇到编译错误,而sizeof var
(其中var是变量)可以正常工作。
int a;
a = (int) sizeof( a ); //ok
a = (int) sizeof( int ); //ok
a = (int) sizeof a; //ok
a = (int) sizeof int; //error
有谁能告诉我,为什么我会收到错误?
(旧机器,mac osx 10.5.8,gcc 4.0.1)
答案 0 :(得分:6)
根据C标准(引自ISO / IEC 9899:TC3第6.5.3.4节):
sizeof运算符产生其操作数的大小(以字节为单位),可以是表达式或类型的带括号的名称。
因此,使用不带括号的类型名称是不合法的。
此外,sizeof
返回类型为size_t
的实现定义值,您可能不应该将其强制转换。
答案 1 :(得分:3)
当sizeof
运算符的操作数是类型名称(int
,float
,char
....)时,需要括号。
答案 2 :(得分:2)
sizeof( type ) //need parenthesis for data type eg. int, float
sizeof expression //No parenthesis for variable or expression