c语言逻辑运算符 我不明白&&和||到底是怎么运算的
我知道&&表示逻辑运算或与非,可是下面的式子都是运算没有判断,哪里来的正误呢……一道例题我不懂i=3,j=3,k=3i&&j&&k=1为什么?还有一个程序,inti,j;...
我知道&&表示逻辑运算或与非,可是下面的式子都是运算没有判断,哪里来的正误呢……
一道例题我不懂
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*/
完全的不懂它怎么出来的
而且
有没有括号会影响计算吗?
麻烦请尽量详细一点!我是初学者,一点都不懂 展开
一道例题我不懂
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*/
完全的不懂它怎么出来的
而且
有没有括号会影响计算吗?
麻烦请尽量详细一点!我是初学者,一点都不懂 展开
展开全部
i&&j&&k,先判断i&&j,因为i和j都大于0,所以这个命题是真的,所以i&&j这个表达式等于1,再判断后面的1&&k(PS:如果i&&j这个表达式等于0,后面的就不用判断了,整个表达式就是0了)
。因为k大于0,所以1&&k就等于1,整个表达式就等于1了。
。因为k大于0,所以1&&k就等于1,整个表达式就等于1了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
更多追问追答
追问
什么是逻辑正?为什么i&&j=1 呢?
结果应该没问题吧 ?是老师上课给的例子
追答
对于数字来说,非0即为逻辑正,所以i和j都是逻辑正(就是一般所谓的1),所以结果为1啊
为什么第一个输出只有一个呢,你的printf里面有两个%d
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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将不参与计算。
&&的形式为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将不参与计算。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询