C语言逻辑语言运算顺序
有这样一个问题:inta=1,b=2,c=3,d=4,m=5,n=6;a=(m=a>b)&&(n=c>d)||++a==b--;要求输出a,b,m,n的值?另外再问一下在...
有这样一个问题:
int a=1,b=2,c=3,d=4,m=5,n=6;
a=(m=a>b)&&(n=c>d)||++a==b--;
要求输出a,b,m,n的值?
另外再问一下在哪些情况下逻辑语句不用每条都完全运算出来?
谢谢各位! 展开
int a=1,b=2,c=3,d=4,m=5,n=6;
a=(m=a>b)&&(n=c>d)||++a==b--;
要求输出a,b,m,n的值?
另外再问一下在哪些情况下逻辑语句不用每条都完全运算出来?
谢谢各位! 展开
3个回答
展开全部
a=(m=a>b)&&(n=c>d)||++a==b--;
首先是
m=a>b,a>b为假,所以m=0.
&&是有一个是0就是假,||是有一个为1就为1,
所以不短路的条件都看运算符前的,
如果&&前是0,不运算后面,结果必为0;
如果||前是1,不运算后面,结果必为1。
所以(m=a>b)&&(n=c>d)前面的是0,所以必为假,因此)(n=c>d)就不用看了,也不计算,n的结果也没改变,还是6。(m=a>b)&&(n=c>d)结果就是0.
变成 0 ||++a==b--;
所以要看后面的,a,b之前值没改,所以++a是2,b--是先赋值后减,所以赋值时还是2.
所以++a==b-- 结果是1.然后赋值给a,因此a=1,b因为前面自减,所以赋值2自减的结果是1,所以b=1。
结果 1 1 0 6
满意就采取最佳答案吧!
首先是
m=a>b,a>b为假,所以m=0.
&&是有一个是0就是假,||是有一个为1就为1,
所以不短路的条件都看运算符前的,
如果&&前是0,不运算后面,结果必为0;
如果||前是1,不运算后面,结果必为1。
所以(m=a>b)&&(n=c>d)前面的是0,所以必为假,因此)(n=c>d)就不用看了,也不计算,n的结果也没改变,还是6。(m=a>b)&&(n=c>d)结果就是0.
变成 0 ||++a==b--;
所以要看后面的,a,b之前值没改,所以++a是2,b--是先赋值后减,所以赋值时还是2.
所以++a==b-- 结果是1.然后赋值给a,因此a=1,b因为前面自减,所以赋值2自减的结果是1,所以b=1。
结果 1 1 0 6
满意就采取最佳答案吧!
展开全部
a=2,b=1,m=5,n=6;
(m=a>b)&&(n=c>d)||++a==b--;这个表达式可是(m=a>b)&&(n=c>d)结合,可以看成一个整体,于是乎这个表达式就是p||q的情况,应先看q部分而q就是++a==b--;
经过判断可知这句话是真的,所以整个表达式(m=a>b)&&(n=c>d)||++a==b--;
就是真的,p部分不需要判断了,除了a和b之外其他值都不变!!!
运算规则:
a&&b:如果a为假,整个表达式就是假,就不执行b了,
a||b如果a为真整个表达式就是真,就不在执行b了
只要记住这两句话,任何此类的题都会做了,但是要多加练习!!
(m=a>b)&&(n=c>d)||++a==b--;这个表达式可是(m=a>b)&&(n=c>d)结合,可以看成一个整体,于是乎这个表达式就是p||q的情况,应先看q部分而q就是++a==b--;
经过判断可知这句话是真的,所以整个表达式(m=a>b)&&(n=c>d)||++a==b--;
就是真的,p部分不需要判断了,除了a和b之外其他值都不变!!!
运算规则:
a&&b:如果a为假,整个表达式就是假,就不执行b了,
a||b如果a为真整个表达式就是真,就不在执行b了
只要记住这两句话,任何此类的题都会做了,但是要多加练习!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 1 0 6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询