带有逻辑 && 和 || 的 IF 语句运营商
IF statement with logical && and || operators
我有以下代码:
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 或 1, 1, 11 或 11, 1, 1 或 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 都不等于零。
对于这个数字
1, 11, 1 or 1, 1, 11
此条件有效。
对于这个数字
11, 1, 1 or 1, 1, 1
条件无效。
考虑到例如这个子条件
(number1 && number2 > rndNumber)
相当于
(number1 != 0 && number2 > rndNumber)
我有以下代码:
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 或 1, 1, 11 或 11, 1, 1 或 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 都不等于零。
对于这个数字
1, 11, 1 or 1, 1, 11
此条件有效。
对于这个数字
11, 1, 1 or 1, 1, 1
条件无效。
考虑到例如这个子条件
(number1 && number2 > rndNumber)
相当于
(number1 != 0 && number2 > rndNumber)