![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C语言中 b = a && a > 0 这个事什么意思 怎么算
4个回答
展开全部
“=”在C语言中是算数表达式,“>”是关系表达式,“&&”是逻辑表达式,在C语言中“算数”>“关系”>“逻辑”,因此先执行“b=a”,在执行“a>0”,让后再把两个表达式连在一起执行。当两边的值都对时,这个表达式就为真,当两边有一个为假时,这个表达式为假。在程序中执行时,也就是把a的值赋予b并且a>0时才能把a的值赋予b这时这个表达式为真,否则“a
展开全部
同楼上,这是一个运算符优先级的问题,在这里
比较运算符>逻辑运算符>赋值运算符
b
=
(a
&&
(a
>
0))
但是,需要注意的是,&&和||这两个运算符的特点:
如果&&左边运算的值为0,那它不会再做右边的运算。例如
int
i=1;
if(--i
&&
++i){……}
这个时候i的值其实是0,if中只做了--i,因为这个时候i已经等于0了,所以并没有再做++i。
这个与运算符优先级无关,只是编译器优化时候把后面的优化掉了。
先判断a是否为0,
如果是0则b=0;
如果a不等于0在判断a>0是否成立
最后做赋值
比较运算符>逻辑运算符>赋值运算符
b
=
(a
&&
(a
>
0))
但是,需要注意的是,&&和||这两个运算符的特点:
如果&&左边运算的值为0,那它不会再做右边的运算。例如
int
i=1;
if(--i
&&
++i){……}
这个时候i的值其实是0,if中只做了--i,因为这个时候i已经等于0了,所以并没有再做++i。
这个与运算符优先级无关,只是编译器优化时候把后面的优化掉了。
先判断a是否为0,
如果是0则b=0;
如果a不等于0在判断a>0是否成立
最后做赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把a的值赋给b与a大于0
这是个逻辑表达式
表示两者都成立
这种表达式只有两种结果
两边都成立结果为
1
有一边或者两边都不成立则为0
这是个逻辑表达式
表示两者都成立
这种表达式只有两种结果
两边都成立结果为
1
有一边或者两边都不成立则为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询