C++ 逻辑与运算符
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)
而不是所有匹配对。我知道它与 &&
有关,但为什么它没有像我预期的那样显示其他对?
I expected it to print all the pairs except the matching ones
然后将(j < 4) && (j != i)
替换为j < 4
并在内部循环中添加一个if
语句。
for 循环 运行 直到终止条件第一次变为假。这就是为什么它被称为终止条件。
for 循环的工作原理是从初始化一个变量开始。 (初始化;例如 i = 1)
然后,第二个命令是一个布尔语句,当为假时,将暂停 for 语句。 (例如,我 < 10)
第三条语句告诉 for 循环当布尔语句为真时做什么。 (例如,递增 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
我有以下代码
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)
而不是所有匹配对。我知道它与 &&
有关,但为什么它没有像我预期的那样显示其他对?
I expected it to print all the pairs except the matching ones
然后将(j < 4) && (j != i)
替换为j < 4
并在内部循环中添加一个if
语句。
for 循环 运行 直到终止条件第一次变为假。这就是为什么它被称为终止条件。
for 循环的工作原理是从初始化一个变量开始。 (初始化;例如 i = 1)
然后,第二个命令是一个布尔语句,当为假时,将暂停 for 语句。 (例如,我 < 10)
第三条语句告诉 for 循环当布尔语句为真时做什么。 (例如,递增 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