i
是1,为什么sizeof(i++)
之后i
还是1 ?我只知道sizeof
是operator
。
int main() {
int i = 1;
sizeof(i++);
std::cout << i << std::endl; // 1
}
sizeof
不对其操作数求值。它决定操作数的类型并返回其大小。为了确定操作数的大小,没有必要对其求值。这实际上是c++的基本核心原则之一:所有对象的类型——以及所有表达式的结果——在编译时都是已知的。
由于操作数没有被求值,所以它的求值没有副作用。如果sizeof()
使函数调用,则该函数实际上不会被调用:sizeof(hello_world())
不会调用该函数,而只是确定它返回的内容的大小。