“sizeof(int)”中的“(int)”是一个类型转换运算符还是一些特殊情况参数? [C]

时间:2015-07-14 17:32:58

标签: c casting sizeof

我总是假设C表达式sizeof (int)就像一个函数一样工作,括号内的任何内容都像参数一样被传递。由于int(或任何其他类型说明符)实际上是一个关键字而不是可以传递的对象,我认为它只是某种特殊情况硬编码到编译器中。

但我最近发现,如果我在变量上使用sizeof,我可以省略括号(sizeof var)并且它将编译并运行正常。由于sizeof实际上是一个运算符本身而不是一个函数(并且运算符不需要括号),并且类型说明符是唯一需要括号的东西,现在我想知道它们是否真的是类型说明符或者是否它们实际上是sizeof以某种方式使用的类型转换运算符来查找相应类型的大小。

1 个答案:

答案 0 :(得分:3)

如果操作数是数据类型,则

()sizeof运算符一起使用。

C11:6.5.3.4(p2):

  

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