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将不参与计算。本回答被网友采纳

c语言逻辑运算符 我不明白&&和||到底是怎么运算的
右操作数b将不参与计算。对于||,如果左操作数a非0,那么结果必然为1,右操作数b将不参与计算。

c语言逻辑运算符 我不明白&&和||到底是怎么运算的
逻辑运算,方式子成立是即为真时整个式子值就为1反之为0,而对于值来说只要不是0就为真,如i&&j&&k=1,i,j=3都为真,所以整个式子为真等于1。另外要注意的是当&&左边为假时不进行右边计算,如(i=0)&&(j=3);l为0假右边j=3不进行运算,所以j还是等于2,手机写的真不方便。

c语言中&&和||的区别
c语言中的"&&"和"||"是逻辑运算符,用于条件判断。其中,"&&"代表逻辑与操作,它的作用是当两个条件都为真时,整个表达式的值才为真。否则,只要有一个条件为假,整个表达式的值就为假。例如,使用"&&"进行条件判断时,只有当两个条件同时满足时,程序才会执行后面的代码。如果任何一个条件不满足...

C语言中&&和||到底先算哪个?
其实计算机是这样算的,他会以||为界将表达式分为两部分,他会先算前一部分,如果前一部分为真,他将停止运算,如果为假,他才会算第二部分,你这里第一部分就为真了,第二部分当然也就不会算了。关于计算机对表达式优先级的判断,如果你学了数据结构中栈的结构和应用你就明白了。不过像这种表达式...

C语言逻辑运算符和if语句
c语言中的逻辑运算符就三种,&&与||或!非,它们的优先极顺序为非,与,或。它们含义如下,!:当操做数为真时,结果为假,反之也成立,并且它的优先极也最高,因为只有它是单目运算符,&&:只有当两个操做数都为真时,结果才为真,否则为假。||:只有当两个操做数都为假时,结果才为假,否则...

c语言中的&&和||的区别
在C语言中,&& 和 || 都是逻辑运算符,用于连接两个布尔表达式,并判断它们的关系。但是它们之间有一些区别。&&(逻辑与):逻辑与运算符连接两个布尔表达式,并返回true或false。如果第一个表达式为false,则第二个表达式不再计算。例如,以下代码会输出false:在这个例子中,x == 0是false,因此整个...

c语言表示&&和||各表示什么
“&&”表示 与,意为同时都要满足。“||”表示 或,意为二者或多着只要满足其中一个。在C语言中,&&和||都属于逻辑运算符,并且都是双目运算符。逻辑运算符总共有3个,分别是"&&"、"||"和"!"。a && b,一假必假,结合性从左至右。||是逻辑或运算符,a || b,一真必真,结合性从左...

C语言中的运算符的&与&& 和 |与||有什么区别,用在什么地方
&是 按位与 比如a=0xf0(11110000b),b=0xcc(11001100),那么a&b=0xc0(11000000b),意思就是每组二进制位响应地做与运算 同理 | 是按位取或,a|b=0xfc(11111100b)意思就是每组二进制位相应地做或运算。&&和||就是判断逻辑的与和或,比如(a==b)&&(c==d)意思就是,a等于b,并且c等于d...

逻辑运算符&&和||有什么区别?
分别是&&和||。c语言中的&&有三种使用方式。1 、取地址操作符。单目运算,与其后的变量或常量组合,用于获取该操作数的内存地址。2 、位操作中的按位与操作 双目运算符,&&的两边的表达式均参与操作。计算时按位计算。对于任意一位,如果两个操作数该位上的值均为1,则结果该位上为1。否则结果该...

c语言中&&与||的优先级
&&和ll运算符都是同一优先级的,是自左向右结合运算,该程序的运算结果为1即为真,因为++all++b结果为1,再投行&&++c两边都为真所以整个逻辑表达式为1 a=2,b=1,c=1

相似回答