数据类型的sizeof运算符错误

时间:2013-12-26 09:48:34

标签: c

我发现很奇怪,我在使用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)

3 个答案:

答案 0 :(得分:6)

根据C标准(引自ISO / IEC 9899:TC3第6.5.3.4节):

  

sizeof运算符产生其操作数的大小(以字节为单位),可以是表达式或类型的带括号的名称。

因此,使用不带括号的类型名称是不合法的。

此外,sizeof返回类型为size_t的实现定义值,您可能不应该将其强制转换。

答案 1 :(得分:3)

sizeof运算符的操作数是类型名称(intfloatchar ....)时,需要括号。

答案 2 :(得分:2)

sizeof语法

sizeof( type )  //need parenthesis for data type eg. int, float

sizeof  expression //No parenthesis for variable or expression