一个或两个语句中的while循环有什么区别?
我很困惑理解这两个循环之间的区别及其结果:
状态 1:
int n = 10;
while (n>0) {
cout << n << ", " << --n;
}
状态 2:
int n = 10;
while (n>0) {
cout << n << ", ";
--n;
}
我不明白为什么结果要区分?
状态 1 显示:10、99、88、77、66、55、44、33、22、11、0
尽管
状态 2 显示:10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
怎么了?是什么造成了这种差异?
回答
这些值没有区别,只是由于打印的次数不同而出现的次数不同。
第一个输出,为清楚起见添加了“()”:
(10, 9)(9, 8)(8, 7)(7, 6)(6, 5)(5, 4)(4, 3)(3, 2)(2, 1)(1, 0)
请注意,输出的开头和结尾创建了中间没有“,”的数字对。
第二个输出:
(10, )(9, )(8, )(7, )(6, )(5, )(4, )(3, )(2, )(1,)
请注意,我没有在这个问题中讨论由于++在一个值上使用并在同一语句中输出它而导致的不可靠求值顺序的主题。这仅与您在环境中观察到的行为差异有关。