C++ sizeof(int)(或任何简单数据类型的任何sizeof)在运行时是否会花费任何费用?

C++ sizeof(int)(或任何简单数据类型的任何sizeof)在运行时是否会花费任何费用?,c++,sizeof,C++,Sizeof,我原以为所有必要的信息在编译时都会被知道,编译器可以插入一个常量值 确实会发生这种情况吗?否。sizeof(int)导致一个size\u t类型的常量表达式,这意味着它的值在编译时已知。没有运行时开销 > P>不。这是编译时的事情。 < P>不,在C++中, sieOS/总是在编译时进行评估。 请注意,这在C语言中不是真的,例外是可变长度数组。不,sizeof只是编译时的。当然,除了VLAs。(但无论如何那是C。)@AndrewS。从技术上讲,只要得到正确的结果,你的编译器就可以像它希望的那样愚

我原以为所有必要的信息在编译时都会被知道,编译器可以插入一个常量值


确实会发生这种情况吗?

否。
sizeof(int)
导致一个
size\u t
类型的常量表达式,这意味着它的值在编译时已知。没有运行时开销

> P>不。这是编译时的事情。

< P>不,在C++中,<代码> sieOS/<代码>总是在编译时进行评估。
请注意,这在C语言中不是真的,例外是可变长度数组。

不,
sizeof
只是编译时的。当然,除了VLAs。(但无论如何那是C。)@AndrewS。从技术上讲,只要得到正确的结果,你的编译器就可以像它希望的那样愚蠢和低效,但是你可能真正想要使用的编译器是尽可能聪明的。这一切都可以在编译时轻松完成。@chris不。编译器可以随心所欲地变得愚蠢和低效,即使你尽力帮助它变得聪明。当然,您可能实际使用的编译器将尽可能智能,并且实际上会在编译时执行。@Nik-不,简单的好奇和
sizeof
不会在C++14中的VLAs上工作,因此它将保留该属性。@chris:太好了!我不知道。谢谢。@chris:VLAs把它变成C++14了吗?我看到过关于
std::dynamic_array
的讨论,但没有正式的完整VLA提案。@MatthieuM.,VLA和
std::dynarray
都在。@MatthieuM.:是。:-)