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*/
完全的不懂它怎么出来的
而且
有没有括号会影响计算吗?
麻烦请尽量详细一点!我是初学者,一点都不懂
展开
 我来答
徐州信奥编程魏博士
2012-02-05
知道答主
回答量:43
采纳率:0%
帮助的人:10.1万
展开全部
逻辑运算,方式子成立是即为真时整个式子值就为1反之为0,而对于值来说只要不是0就为真,如i&&j&&k=1,i,j=3都为真,所以整个式子为真等于1。另外要注意的是当&&左边为假时不进行右边计算,如(i=0)&&(j=3);l为0假右边j=3不进行运算,所以j还是等于2,手机写的真不方便。
加班机器人
2012-02-05 · TA获得超过118个赞
知道答主
回答量:114
采纳率:0%
帮助的人:75.4万
展开全部
i&&j&&k,先判断i&&j,因为i和j都大于0,所以这个命题是真的,所以i&&j这个表达式等于1,再判断后面的1&&k(PS:如果i&&j这个表达式等于0,后面的就不用判断了,整个表达式就是0了)
。因为k大于0,所以1&&k就等于1,整个表达式就等于1了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fa431c5
推荐于2017-09-03
知道答主
回答量:11
采纳率:0%
帮助的人:9.2万
展开全部
逻辑正即为1,否则就为0,所以i&&j&&k=1
至于后面的就是因为&&这个运算符了,如果它的前一个为0的话那后面的就会直接忽略
不过你的结果貌似有点问题。。。。
更多追问追答
追问
什么是逻辑正?为什么i&&j=1 呢?
结果应该没问题吧 ?是老师上课给的例子
追答
对于数字来说,非0即为逻辑正,所以i和j都是逻辑正(就是一般所谓的1),所以结果为1啊
为什么第一个输出只有一个呢,你的printf里面有两个%d
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
推荐于2018-11-11 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450125
专业C/C++软件开发

向TA提问 私信TA
展开全部
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将不参与计算。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式