【问题标题】:incrementing and decrementing with while loops in C++ [duplicate]在C ++中使用while循环递增和递减[重复]
【发布时间】:2021-06-29 02:47:36
【问题描述】:

我有点困惑
为什么这段代码

#include <iostream>
#include <string>
using namespace std;
int main()
{
   int n = 1;
   do
   cout << n << " " ;
   while (n++ <= 3);
}

返回 1 2 3 4

还有这段代码

#include <iostream>
#include <string>
using namespace std;
int main()
{
   int n = 1;
   do
   cout << n << " " ;
   while (++n <= 3);
}

只返回 1 2 3

我的意思是,在第一个代码中,为什么当 4 肯定大于 3 时它返回 4? 以及为什么它在第二个代码中停在 3 处:/ 令人困惑

【问题讨论】:

标签: c++ while-loop increment do-while


【解决方案1】:

因为n++的值是n在递增之前的值。 ++n 的值是 n 递增后的值。

例如

int n = 1;
std::cout << n++ << std::cout; // shows 1
std::cout << n << std::cout; // shows 2

n = 1;
std::cout << ++n << std::cout; // shows 2
std::cout << n << std::cout; // shows 2

在第一个代码中,为什么在4肯定大于3的情况下返回4?

如上例所示,n 的值在增量发生之前返回。

为什么它在第二个代码中停在 3 处?

因为n的值在增量发生后返回。

【讨论】:

    【解决方案2】:

    这是因为在:

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
       int n = 1;
       do
       cout << n << " " ;
       while (n++ <= 3);//**
    } 
    

    ** 因为这里 n 的值在此 while n++ &lt;=3 语句之后递增,这意味着一旦打印 n=3 和 1,2,3 将测试条件是否为 n=3,然后值将增加到 4,并且由于发现条件为真,并且 n 的值也增加了,因此 n=4 也将被打印出来。

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 2017-07-05
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      相关资源
      最近更新 更多