c - 带有逻辑 && 和 || 的 IF 语句 运营商
问题描述
我有以下代码:
if (scanf("%d %d %d", &number1, &number2, &number3) == 3 &&
((number1 == rndNumber) || (number2 == rndNumber) || (number3 == rndNumber))) {
printf("Champ!\n");
} else if ((number1 && number2 > rndNumber) || (number1 && number3 > rndNumber) ||
(number2 && number3 > rndNumber)) {
printf("else if!\n");
} else {
printf("else\n");
}
如果 rndNumber 是例如:10
3个数字的输入是:1, 11, 1 or 1, 1, 11 or 11, 1, 1 or 1, 1, 1
else 语句只会在第三个和第四个输入上执行..我不明白为什么
解决方案
此 if 语句的子语句
} else if ((number1 && number2 > rndNumber) || (number1 && number3 > rndNumber) ||
(number2 && number3 > rndNumber)) {
printf("else if!\n");
}
将在 number2 大于 rndNumber 或 number3 大于 rndNumber 时执行,前提是 number1 或 number2 都不等于 0。
对于这个数字
1, 11, 1 or 1, 1, 11
这个条件是有效的。
对于这个数字
11, 1, 1 or 1, 1, 1
条件无效。
考虑到例如这个子条件
(number1 && number2 > rndNumber)
相当于
(number1 != 0 && number2 > rndNumber)
推荐阅读
- scheme - 如何计算一个列表中的模式出现在Scheme的另一个列表中的次数
- javascript - 将javascript创建的复选框传递给控制器以保存到表格?
- php - 编辑 PHP MySQL 时未出现旧值
- ruby-on-rails - 我安装了 rails 6 beta,但无法启动示例应用程序
- excel - 日期的 Excel 公式,但不包括空单元格
- c# - 解析文本文件以获取数据的有效方法
- reactjs - 如何在 React 中为图像创建简单的旋转动画
- ios - UIWebview 中出现两个视频播放器
- python - 将两个字典放入单个字典
- android - Android XML:具有匹配父布局的 Android 中的垂直 Seekbar 无法正常工作