C语言 关于逻辑运算且 b=(-1)&&(-1) b是多少,怎么算的?

如题所述

第1个回答  推荐于2017-09-27
C语言使用非0代表逻辑真(返回逻辑真时使用1),0代表逻辑真。

而&&是运算符,当两边同时为真时,结果才为真。

-1非0,代表逻辑真。因此(-1)&&(-1) 就是真&&真,结果仍然为真。

即上面的运算变成了b=真,即b=1
第2个回答  2014-06-05
-1 为真 ,
那么 -1 && -1 就是真 就是1
那么b=1追问

为什么-1为真?

-1不是负数吗 负数不是假吗,假的话 b是0吧

追答

C语言里面规定 非0 为真
0 为假 记住就是

追问

哦还以为负值是0

int a,b,c;
a=b=c=1;
++a||++b&&++c
后b的值是多少

追答

++a 为真 那么++b没必要计算
那么b还是1

追问

这里面是先算&&吗

&&的优先级不是比||高吗

是不是应该先算&&

追答

&& 的优先级高于||

但是计算还是从左边开始,这是一个栈机制

追问

对呢

那那个语句是不是先算++b吗

追答

你还没搞懂他是怎么计算的,你学过栈吗? 表达式计算都是从左道右,再考虑优先级问题

追问

没有学过栈

能不能讲一个小规则

追答

所以你根本理解不了这个执行顺序

追问

是的

追答

我代码测试了b还是1,说明我理解的没错

追问

是的,我也运行过

怎么判断先优先运算还是从左往右运算呢

追答

你可以看下栈相关的知识,再来看这题,就简单了

不管什么表达式都是从左开始计算,直到优先级选择的时候,在考虑优先级

追问

好的,谢谢

追答

不谢

本回答被提问者采纳
第3个回答  2014-06-05
非 0 就为真 所以-1为真

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网