我正在开发大型代码库。在重构某些代码时,我发现了一些与引用有关的奇怪行为。下面是解释我的问题的最少代码。
#include <iostream>
int main() {
// case 1
{
int start = 1;
const int &eRef = start > 0 ? start : 9;
start = 2;
std::cout << start << eRef;
}
std::cout << std::endl;
// case 2
{
int start = 1;
int end = 9;
const int &eRef = start > 0 ? start : end;
start = 2;
std::cout << start << eRef;
}
std::cout << std::endl;
return 0;
}
以上代码的输出为
21
22
我期望两种情况下的输出22
。但是两种情况下的输出都不同。
这可能是按照标准进行的,但我想知道其背后的原因。