【问题标题】:comparing two variables in c++比较c++中的两个变量
【发布时间】:2020-04-28 19:44:29
【问题描述】:

学习 c++,我确信我忽略了一些明显的东西,但我不确定为什么我没有收到 i == j 的消息,即使在第 3 次迭代之后数字是一样吗?

这是输出:

8 不等于 12

9 不等于 11

感谢任何提示!

#include<iostream>

int main(){

   int i=8;
   int j=12; 

   for (i,j; i!=j; ++i, --j)
   {    
   if (i == j) 
        {     
         std::cout << "i = j" << "\n";   // this part doesnt work
         break;
        }
   else 

        std::cout << i <<" is not equal to " << j <<"\n"; 

   }
}

【问题讨论】:

  • 完美!谢谢@dynamic-squid,来自莫斯科的 Vlad 和 Linux Man

标签: c++ for-loop if-statement until-loop


【解决方案1】:

只有当i由于条件不等于j时才会执行循环

for (i,j; i!=j; ++i, --j)
          ^^^^

i 等于j 时,循环体不会获得控制权,因为条件的计算结果为false

您应该更改循环中的条件。 break 语句也是多余的。

这是一个演示程序。

#include <iostream>

int main()
{
    for ( int i = 8, j = 12;  not ( j < i ); ++i, --j )
    {    
        if ( i == j ) 
        {     
            std::cout << "i = j" << "\n";
        }
        else 
        {
            std::cout << i <<" is not equal to " << j <<"\n"; 
        }
    }       
}

它的输出是

8 is not equal to 12
9 is not equal to 11
i = j

注意,在任何情况下,一般情况下你都不能在循环中使用条件i != j,因为当这个范围包含偶数个值时,你会得到一个无限循环。例如,考虑i 等于10 并且j 等于11 的情况。在这种情况下,循环的第一次迭代后i 将等于11j 将等于10 和再次i != j。:)

【讨论】:

    【解决方案2】:

    您可以使用(; i &lt;= j; ++i, --j)

    以下是你的代码的修改版本,只是从!=更改为&lt;=

    #include <iostream>
    
    int main()
    {
    
        int i = 8;
        int j = 12;
    
        for (; i <= j; ++i, --j)
        {
            if (i == j)
            {
                std::cout << "i = j" << std::endl;
            }
            else
                std::cout << i << " is not equal to " << j << "\n";
        }
    
        return 0;
    }
    

    输出:

    8 is not equal to 12
    9 is not equal to 11
    i = j
    

    【讨论】:

      【解决方案3】:

      这是因为你的循环在i 等于j 时停止,然后才打印出来。并且由于您在 i 应该等于 j 时跳出循环,因此您可以像这样重写它:

          for (int i = 8, j = 12; i != j; ++i, --j)
              std::cout << i << " is not equal to " << j << "\n";
      
          std::cout << "i = j\n";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多