c - 为什么我的程序卡在我的 do while 循环中?
解决方案
万一x == 0
呢?x != 1
将是真实的,并且整个条件将是真实的。
万一x == 1
呢?x != 0
将是真实的,并且整个条件将是真实的。
万一x == 2
呢?x != 0
将是真实的,并且整个条件将是真实的。
因此,无论如何,您的条件都会为真,并且您将继续循环。
您希望以下内容为真:
(x == 0 || x == 1) && (y == 0 || y == 1)
所以你想在它是假的时候循环。
do { } while (!((x == 0 || x == 1) && (y == 0 || y == 1)));
!(P && Q)
等价于!P || !Q
, 并且
!(P || Q)
等价于!P && !Q
这意味着以下内容等价于上述内容:
do { } while (!(x == 0 || x == 1) || !(y == 0 || y == 1));
do { } while ((x != 0 && x != 1) || (y != 0 && y != 1));
推荐阅读
- python - ValueError:使用序列设置数组元素。谁能告诉我如何解决这个问题
- php - 注销使重定向到本地主机仪表板
- neural-network - PyTorch 中的全局平均池化:torch.nn.AvgPool1d 与 torch.mean
- django - 为什么 collectstatic 将我删除的文件添加回我的 Wagtail 项目?
- swift - 如何获得 SwiftUI 颜色的明暗模式版本?
- python - 如何更改此熊猫数据框中的 unix 时间
- python - 如何在绘图破折号中向直方图添加垂直线?
- firebase - Cloud Firestore 数据建模
- python - 如何将 automl 模型(使用 autosklearn)转换为 pmml?
- node.js - 向数组添加元素而不重复MongoDB