繁体   English   中英

C ++逻辑AND运算子

[英]C++ Logical AND operator

我有以下代码

    for (int i = 0; i < 4; i++) {
            for (int j = 0; (j < 4) && (j != i); j++) {
                    cout << j << "," << i;
            }
            cout << "\n";
    }

输出:

    (0,1)
    (0,2)(1,2)
    (0,3)(1,3),(2,3)

我希望它能打印除匹配对以外的所有对:

    (1,0)(2,0)(3,0) //without (0,0)
    (0,1)(2,1)(3,1) //without (1,1)
    (0,2)(1,2)(3,2) //without (2,2)
    (0,3)(1,3)(2,3) //without (3,3)

当for循环中的条件更改为(j < 4) && (j == i) // output: (0,0)它仅打印(0,0)而不是所有匹配的对。 我知道它与&&但是为什么它不显示我期望的其他对呢?

我希望它能打印除匹配对以外的所有对

然后将(j < 4) && (j != i)替换为j < 4并在内部循环内添加if语句。

for循环一直运行到终止条件第一次变为假。 这就是为什么将其称为终止条件。

for循环的工作方式是从初始化变量开始。 (初始化;例如i = 1)

然后,第二个命令是一个布尔语句,当为false时,它将暂停for语句。 (例如i <10)

第三个语句告诉for循环,当布尔语句为true时该怎么做。 (例如,增量i,i = i + 1)

但是,在您的情况下,您编写了(j <4)&&(j!= i),因此只要您的j和i相等,就立即停止执行第二个嵌套的for循环!

您可以添加一个if语句来缓解此问题,但是您也可以使用continue语句,当值相等时(它将完全停止for循环),它将跳过其后的所有内容:

for(int i  = 0; i < 4; i++)
{
   for(int j = 0; j < 4; j++)
   {
     if(i == j) continue;
     cout << j << "," << i;
   } 
}

这是一个现场演示: https : //ideone.com/Q9oe4I

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM