在C编程语言中使用逻辑运算符解决问题



#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 ) ){

由于CCD_ 1不等于CCD_ 2,则逻辑OR运算符CCD_。所以if语句中使用的整个表达式都有一个逻辑true的结果。

事实上,由于a不等于7(由于其初始化(,则上述if语句等效于

if( 10 ){

这:

if (a == 7 || 10)

是否测试a是否等于7或10。

如果两个操作数相等,==运算符的计算结果将为1,否则为0。如果至少有一个操作数为非零,则||运算符的计算结果为1,否则为0。

此外,相等运算符的优先级高于逻辑OR运算符。所以上面解析为:

if ((a == 7) || 10)

因此,如果a==7的计算结果为非零或100的计算结果非零,则表达式将为true。后者是真的,所以条件是真的。

这是一个逻辑错误。键入它的方式不是检查a==7还是a==10(如您所愿(,而是只检查a==7和第二个条件if(10(是否始终为真。

实际上,修复非常简单:

void main()
{
int a = 11, b = 5;
if(a == (7 || 10)){
printf("True");
}
else
printf("False");
}

相关内容

  • 没有找到相关文章

最新更新