我们知道这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
比*&
实际编译具有优势;-)
+
。例如,sizeof +(char)a == sizeof(int)
由于整数的提升,如果您完全担心要尝试使用的表达式的大小,只需将括号放在括号中可能不太容易出错。所以我不确定是否会称其为“一种用途”,尽管我承认我确实使用过……
sizeof (int)a
。