我有以下代码:
#include <iostream>
void f(int &x) {
x = 5;
}
int main() {
int x;
f(x);
std::cout << x << std::endl;
return 0;
}
此代码是否在C++中调用未定义的行为? g++会在没有任何警告的情况下对其进行编译,并且该代码会打印出
5
(如预期的那样?)。 最佳答案
此代码中没有未定义的行为。在为分配值之前,先使用一个未初始化的变量来定义它是不确定的,但是它是明确定义的,它可以绕过引用并通过引用执行赋值。