【发布时间】:2015-07-14 17:32:57
【问题描述】:
我一直认为 C 表达式 sizeof (int) 像函数一样工作,括号内的任何内容都像参数一样传递。由于int(或任何其他类型说明符)实际上是一个关键字而不是可以传递的对象,我认为它只是某种硬编码到编译器中的特殊情况。
但我最近发现,如果我在变量上使用 sizeof,我可以省略括号 (sizeof var),它会编译并运行良好。由于sizeof 实际上是一个运算符本身而不是一个函数(并且运算符不需要括号),并且类型说明符是唯一需要括号的东西,现在我想知道它们是否真的是类型说明符或者如果他们'实际上,sizeof 以某种方式使用类型转换运算符来查找相应类型的大小。
【问题讨论】:
-
这就是为什么重复是有用的,由于措辞不同,它们可以帮助其他人找到正确的问题。
-
与其“发现”事物,不如考虑阅读文档。
-
"不知何故被 sizeof 使用" -- sizeof 不是代理;编译器是。编译器当然知道或可以在编译时计算任何类型的大小(VLA 除外)。
sizeof (type)只是 syntax,它告诉编译器此时需要该类型的大小。