c++逻辑与运算符

C++ Logical AND operator

本文关键字:运算符 c++      更新时间:2023-10-16

我有以下代码

    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循环一直运行到终止条件第一次变为false为止。这就是为什么它被称为终止条件

for循环的工作原理是从初始化变量开始的。(初始化;例I = 1)

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

第三条语句告诉for循环当布尔语句为真时该做什么。(例如:increment 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