我遇到了一个非常奇怪的问题。我正在使用步骤来调试我的代码。我原以为光标应该按顺序逐行移动。但是会发生以下现象
using namespace std;
ranlux48_base generator(1);
uniform_real_distribution<double> uniform(0.0, 1.0);
1 int main()
2 {
3 double R1 = uniform(generator);
4 cout << R1 << endl;
5 if (R1 < pH)
6 {
7 Quality[i] = vH;
8 }
9 else
10 {
11 Quality[i] = vL;
12 }
13 cout << Quality[i] << endl;
14 }
奇怪之处如下:光标首先移动到第3行,尝试生成一个随机数,然后移动到第4行(看起来第3行已经执行),但随后又移回第3行,然后移动到第4行,然后执行第4行并打印出随机数。为什么光标会移回?
答案 0 :(得分:0)
您可能使用编译器的默认优化设置编译代码,这为编译器提供了更大的自由重新排序编译代码,以便进行优化。
正如您所发现的那样,这会使调试成为一种痛苦的经历。
关闭编译器提供的所有优化设置。这会使生成的代码运行得慢一点,但可以更容易地调试它。