C语言中&&和||到底先算哪个?

#include<stdio.h>voidmain(){inta,b,c,x;a=b=c=1;x=++a||++b&&++c;printf("%d,%d,%d,%d",x... #include<stdio.h>
void main()
{
int a,b,c,x;
a=b=c=1;
x=++a||++b&&++c;
printf("%d,%d,%d,%d",x,a,b,c);
}
输出的答案是1 2 1 1
c语言教科书后面的附录里写的&&比||的优先级高,网上也是这样说的,但这个程序是从左向右依次运算的。
这不成了&&和||优先级相同了?
求大神解释!!!
优先级和运算顺序有关系吗?
展开
 我来答
老肖的经验
2013-12-08 · TA获得超过438个赞
知道小有建树答主
回答量:177
采纳率:100%
帮助的人:118万
展开全部
其实计算机是这样算的,他会以||为界将表达式分为两部分,他会先算前一部分,如果前一部分为真,他将停止运算,如果为假,他才会算第二部分,你这里第一部分就为真了,第二部分当然也就不会算了。关于计算机对表达式优先级的判断,如果你学了数据结构中栈的结构和应用你就明白了。不过像这种表达式,最好是手动加上括号,而不是靠计算机来自动识别优先级。像这样的,我的编译器都会警告,我都是会加上括号的,这样就没有警告了。如果不信你可以把&&和它的两个操作数括起来,我相信结果还是这样的。
米饭亦是菜肴啊
2013-12-08 · 超过23用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:44.3万
展开全部
++比||和&&的优先级都要高,如果优先级高就先执行的话,那么||和&&执行之前,全部数字(除了x)都已经是2了哟~
毫无疑问的是a||b&&c是等价于a||(b&&c)的,但对于||来说,即使右边有一个括号,但||还是会先计算左边
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友30ef412
2020-04-13
知道答主
回答量:1
采纳率:0%
帮助的人:618
展开全部
这里出现三个运算符,++>&&>||,所以先算++,a=++a=2,为真,后面就不算了,
&&前面是0时,&&符号后面的不计算.

||前面不是0时,||号后面的不计算.
所以x=1,a=2,b=1,c=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冷天释
2013-12-08 · TA获得超过218个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:103万
展开全部
目测楼主没搞清楚为毛要从左开始算。。。。。。
建议先看&&和||的定义在说。

这个顺序不是优先级的问题,这是结合顺序的问题。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eric98811
2013-12-08 · TA获得超过111个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:105万
展开全部
这个要由C的预设||处理方式说明,||只要有一个成立就成立,所以++a后知道是非0就成立了,后面不执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式