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)
而不是所有匹配对。我知道它与&&
有关,但为什么它没有像我预期的那样显示其他配对?
我希望它打印除匹配的以外的所有对
将(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
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 增量运算符与后缀混淆
- 一个关于在C++中重载布尔运算符的问题
- 运算符C++ "delete []"仅删除 2 个前值
- 模板类无法识别友元运算符
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 关闭||运算符优化
- 通过继承类使用来自不同命名空间的运算符
- C++Cast运算符过载
- 如何使用AngelScript注册SFML Vector2运算符
- 重载元组索引运算符-C++
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 布尔比较运算符是如何在C++中工作的
- 重载运算符new[]的行为取决于析构函数
- 如何防止clang格式在流运算符调用之间添加换行符<<