c语言逻辑运算符 我不明白&&和||到底是怎么运算的

我知道&&表示逻辑运算或与非,可是下面的式子都是运算没有判断,哪里来的正误呢……
一道例题我不懂
i=3, j=3,k=3
i&&j&&k=1 为什么?
还有一个程序,
int i,j;
i=2 && (j=2);
printf("%d%d\n",i,j);
/*2 is printed*/
(i=0)&&(j=3);
printf("%d%d\n",i,j);
/*0 2 is printed*/
完全的不懂它怎么出来的
而且
有没有括号会影响计算吗?
麻烦请尽量详细一点!我是初学者,一点都不懂

逻辑运算,方式子成立是即为真时整个式子值就为1反之为0,而对于值来说只要不是0就为真,如i&&j&&k=1,i,j=3都为真,所以整个式子为真等于1。另外要注意的是当&&左边为假时不进行右边计算,如(i=0)&&(j=3);l为0假右边j=3不进行运算,所以j还是等于2,手机写的真不方便。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-05
i&&j&&k,先判断i&&j,因为i和j都大于0,所以这个命题是真的,所以i&&j这个表达式等于1,再判断后面的1&&k(PS:如果i&&j这个表达式等于0,后面的就不用判断了,整个表达式就是0了)
。因为k大于0,所以1&&k就等于1,整个表达式就等于1了。
第2个回答  推荐于2017-09-03
逻辑正即为1,否则就为0,所以i&&j&&k=1
至于后面的就是因为&&这个了,如果它的前一个为0的话那后面的就会直接忽略
不过你的结果貌似有点问题。。。。追问

什么是逻辑正?为什么i&&j=1 呢?
结果应该没问题吧 ?是老师上课给的例子

追答

对于数字来说,非0即为逻辑正,所以i和j都是逻辑正(就是一般所谓的1),所以结果为1啊
为什么第一个输出只有一个呢,你的printf里面有两个%d

追问

对不起少打了一个 输出的是1和2

本回答被提问者采纳
第3个回答  推荐于2018-11-11
1 形式:
&&的形式为a&&b。
||的形式为a||b。
2 计算规则:
&&只有当a和b的值均非0时,结果为1,否则结果为0。
||只有当a和b的值均为0时,结果为0,否则结果为1。
3 优先级:
&&的优先级比||高,所以在写在一起时,先计算&& 再计算||。
相同符号时,自左向右计算。
4 短路原则:
对于&&,如果左操作数a为0,那么结果必然为0, 右操作数b将不参与计算。
对于||,如果左操作数a非0,那么结果必然为1, 右操作数b将不参与计算。本回答被网友采纳

相关了解……

你可能感兴趣的内容

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