为什么变量的值在sizeof(++)之后不增加?



i是1,为什么sizeof(i++)之后i还是1 ?我只知道sizeofoperator

int main() {
int i = 1;
sizeof(i++);
std::cout << i << std::endl;  // 1
}

sizeof不对其操作数求值。它决定操作数的类型并返回其大小。为了确定操作数的大小,没有必要对其求值。这实际上是c++的基本核心原则之一:所有对象的类型——以及所有表达式的结果——在编译时都是已知的。

由于操作数没有被求值,所以它的求值没有副作用。如果sizeof()使函数调用,则该函数实际上不会被调用:sizeof(hello_world())不会调用该函数,而只是确定它返回的内容的大小。

最新更新