我们知道sizeof
是一个用于计算任何数据类型和表达式大小的运算符,当操作数是一个表达式时,括号可以省略。
int main()
{
int a;
sizeof int;
sizeof( int );
sizeof a;
sizeof( a );
return 0;
}
sizeof
的第一个用法是错误的,而其它用法是正确的。
使用 gcc 编译时,会得到以下错误信息:
main.c:5:9: error: expected expression before ‘int’
我的问题是为什么C标准不允许这种操作。 sizeof int
是否会引起任何歧义?
sizeof (int)a
。 - Fred Foosizeof +(int)a
相较于*&
有一个实际编译的优势^-^ - Steve Jessop+
时仍需谨慎。例如,由于整数提升,sizeof +(char)a == sizeof(int)
,如果对要求取大小的表达式存在任何疑虑,最好还是加上括号以避免错误产生。因此我不确定是否应将其称为“用法”,尽管我承认我确实使用过...。 - Steve Jessop