【发布时间】:2020-12-28 11:00:59
【问题描述】:
我很困惑理解这两个循环及其结果之间的区别:
状态 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,
发生了什么?是什么造成了这种差异?
【问题讨论】:
-
第一个 sn-p 打印
n两次... -
cout << n << ", " << --n;这会显示 3 个内容,n、", "和--n。在第二个循环中,cout << n << ", "; --n;这显示了两个东西,n和", "。然后,它递减 n--n -
在您的第一个示例中,将
cout << n << ", " << --n;更改为cout << n << ", " << --n << "\n";,您应该会看得更清楚。 -
pre-C++17,你甚至可能有未确定的评估顺序的奇怪结果。
-
@PaulSanders 谢谢!是的,它让一切都清楚,伙计! ;-)
标签: c++ loops while-loop