在 C 语言中使用逻辑运算符解决问题
Solving a problem using logical operators in C programming language
#include <stdio.h>
void main()
{
int a = 11, b = 5;
if(a == 7 || 10){
printf("True");
}
else
printf("False");
}
这是我的问题,我在一个问题中看到它并被问到输出是什么。
我输入了错误但答案是正确的,我试图理解为什么因为 a 不等于其中任何一个并且它为真的条件是 a 至少等于其中一个
if语句中的表达式
if(a == 7 || 10){
等同于
if( ( a == 7 ) || ( 10 ) ){
由于 10
不等于 0
,因此逻辑 OR 运算符的第二个操作数 ||
始终计算为逻辑真。因此 if 语句中使用的整个表达式的结果为逻辑真。
事实上 a
不等于 7
(由于它的初始化)那么上面的 if 语句等同于
if( 10 ){
这个:
if (a == 7 || 10)
是否 不 测试 a
是否等于 7 或 10。
如果两个操作数相等,则 ==
运算符的计算结果为 1,否则为 0。如果至少有一个操作数不为零,则 ||
运算符的计算结果为 1,否则为 0。
此外,相等运算符的优先级高于逻辑或运算符。所以上面的解析为:
if ((a == 7) || 10)
因此,如果 a==7
的计算结果为非零或 10
的计算结果为非零,则表达式为真。后者为真所以条件为真。
逻辑错误。您键入它的方式不会检查 a == 7 或 a == 10(如您所愿),而是仅检查 a == 7 和第二个条件 if (10) 是否始终为真。
修复实际上非常简单:
void main()
{
int a = 11, b = 5;
if(a == (7 || 10)){
printf("True");
}
else
printf("False");
}
#include <stdio.h>
void main()
{
int a = 11, b = 5;
if(a == 7 || 10){
printf("True");
}
else
printf("False");
}
这是我的问题,我在一个问题中看到它并被问到输出是什么。 我输入了错误但答案是正确的,我试图理解为什么因为 a 不等于其中任何一个并且它为真的条件是 a 至少等于其中一个
if语句中的表达式
if(a == 7 || 10){
等同于
if( ( a == 7 ) || ( 10 ) ){
由于 10
不等于 0
,因此逻辑 OR 运算符的第二个操作数 ||
始终计算为逻辑真。因此 if 语句中使用的整个表达式的结果为逻辑真。
事实上 a
不等于 7
(由于它的初始化)那么上面的 if 语句等同于
if( 10 ){
这个:
if (a == 7 || 10)
是否 不 测试 a
是否等于 7 或 10。
如果两个操作数相等,则 ==
运算符的计算结果为 1,否则为 0。如果至少有一个操作数不为零,则 ||
运算符的计算结果为 1,否则为 0。
此外,相等运算符的优先级高于逻辑或运算符。所以上面的解析为:
if ((a == 7) || 10)
因此,如果 a==7
的计算结果为非零或 10
的计算结果为非零,则表达式为真。后者为真所以条件为真。
逻辑错误。您键入它的方式不会检查 a == 7 或 a == 10(如您所愿),而是仅检查 a == 7 和第二个条件 if (10) 是否始终为真。
修复实际上非常简单:
void main()
{
int a = 11, b = 5;
if(a == (7 || 10)){
printf("True");
}
else
printf("False");
}