C语言问题 ||和&&的优先级谁更大 C语言问题 当以下逻辑表达式出现时,究竟是怎么运算的, a>b&&b||9>c
当以下逻辑表达式出现时,究竟是怎么运算的,a>b&&b||9>c越详细越好,拜托牛牛们了!因为&&和||感觉是同一级的,当它们同时出现时,该怎么算?...
当以下逻辑表达式出现时,究竟是怎么运算的,
a>b&&b||9>c
越详细越好,拜托牛牛们了!
因为&&和||感觉是同一级的,当它们同时出现时,该怎么算? 展开
a>b&&b||9>c
越详细越好,拜托牛牛们了!
因为&&和||感觉是同一级的,当它们同时出现时,该怎么算? 展开
2个回答
展开全部
表达式从左往右依次运算。首先执行a>b&&b。如果这个值为true的话,就结束了。如果是false的话,再和||做运算。写一个简单的测试。你可以通过修改变量值来看不同的结果。
#include <stdio.h>
#include <stdbool.h>
int first()
{
int a = 2, b = 1;
printf("a > b\n");
return a > b;
}
bool second()
{
int b = 0; // set b true or false;
printf("b\n");
return b;
}
bool third()
{
int c = 1;
printf("9>c\n");
return 9 > c;
}
int main()
{
if (first() && second() || third())
{
printf("true\n");
}
else
printf("false\n");
return 0;
}
修改b的值可以看到不同的结果。如图:
展开全部
&&的优先级更高。
回显计算&&
比如 a&&b || c&&d
先计算a&&b 再计算c&&d 最后两个再||
不过 &&和||是有短路规则的。
当&&左值为0,那么右值不会计算。
当||左值为1 那么右值不会计算。
还是这个例子。
a&&b || c&&d
a b c d 如果不是简单的变量 而是表达式
那么
如果a为0, b不参与运算。
如果c为0,d不参与运算
如果a和b都为1,那么a&&b为1. 整个c&&d不参与运算。
回显计算&&
比如 a&&b || c&&d
先计算a&&b 再计算c&&d 最后两个再||
不过 &&和||是有短路规则的。
当&&左值为0,那么右值不会计算。
当||左值为1 那么右值不会计算。
还是这个例子。
a&&b || c&&d
a b c d 如果不是简单的变量 而是表达式
那么
如果a为0, b不参与运算。
如果c为0,d不参与运算
如果a和b都为1,那么a&&b为1. 整个c&&d不参与运算。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |