我觉得很奇怪,我在使用时遇到编译错误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
Run Code Online (Sandbox Code Playgroud)
谁能告诉我,为什么我会收到错误?
(旧机器,mac osx 10.5.8,gcc 4.0.1)
根据C标准(引自ISO/IEC 9899:TC3第6.5.3.4节):
sizeof运算符产生其操作数的大小(以字节为单位),该操作数可以是表达式或类型的带括号的名称.
因此,使用不带括号的类型名称是不合法的.
此外,sizeof返回类型的实现定义值,size_t您可能不应该强制转换它.