如题所述
第1个回答 推荐于2017-09-27
C语言使用非0代表逻辑真(返回逻辑真时使用1),0代表逻辑真。
而&&是运算符,当两边同时为真时,结果才为真。
-1非0,代表逻辑真。因此(-1)&&(-1) 就是真&&真,结果仍然为真。
即上面的运算变成了b=真,即b=1
而&&是运算符,当两边同时为真时,结果才为真。
-1非0,代表逻辑真。因此(-1)&&(-1) 就是真&&真,结果仍然为真。
即上面的运算变成了b=真,即b=1
第2个回答 2014-06-05
-1 为真 ,
那么 -1 && -1 就是真 就是1
那么b=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为真