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语言教科书后面的附录里写的&&比||的优先级高,网上也是这样说的,但这个程序是从左向右依次运算的。
这不成了&&和||优先级相同了?
求大神解释!!!
优先级和运算顺序有关系吗? 展开
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语言教科书后面的附录里写的&&比||的优先级高,网上也是这样说的,但这个程序是从左向右依次运算的。
这不成了&&和||优先级相同了?
求大神解释!!!
优先级和运算顺序有关系吗? 展开
8个回答
展开全部
++比||和&&的优先级都要高,如果优先级高就先执行的话,那么||和&&执行之前,全部数字(除了x)都已经是2了哟~
毫无疑问的是a||b&&c是等价于a||(b&&c)的,但对于||来说,即使右边有一个括号,但||还是会先计算左边
毫无疑问的是a||b&&c是等价于a||(b&&c)的,但对于||来说,即使右边有一个括号,但||还是会先计算左边
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里出现三个运算符,++>&&>||,所以先算++,a=++a=2,为真,后面就不算了,
&&前面是0时,&&符号后面的不计算.
||前面不是0时,||号后面的不计算.
所以x=1,a=2,b=1,c=1
&&前面是0时,&&符号后面的不计算.
||前面不是0时,||号后面的不计算.
所以x=1,a=2,b=1,c=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
目测楼主没搞清楚为毛要从左开始算。。。。。。
建议先看&&和||的定义在说。
这个顺序不是优先级的问题,这是结合顺序的问题。。。。。。。。
建议先看&&和||的定义在说。
这个顺序不是优先级的问题,这是结合顺序的问题。。。。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个要由C的预设||处理方式说明,||只要有一个成立就成立,所以++a后知道是非0就成立了,后面不执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询