有关C语言 一个很简单的问题,希望大神详细点!
inta=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m=a>b)&&(n=>d)后,n的值是多少?A1B2C3D0...
int a=1,b=2,c=3,d=4,m=2,n=2;
则执行表达式:(m=a>b)&&(n=>d)后,n的值是多少?
A 1 B 2 C3 D 0 展开
则执行表达式:(m=a>b)&&(n=>d)后,n的值是多少?
A 1 B 2 C3 D 0 展开
5个回答
2013-11-07
展开全部
B 对于&&运算,若前者为0则能确定算式为0,后者将不做运算,所以n并没有赋值。
追问
a>b 不成立为0,那么M的值是否不再是初始化的值了,而是 a b一个? 简单说吧我很不理解(M=a>b)中= 和>怎么判断?
追答
单目>双目>三目运算>赋值。所以先算>
展开全部
n=2,
因为m=(a>b);
解释为:如果a大于b,那么m等于true(即1);否则m等于false(即0);
n=c>d也是这个意思.
再有(m=a>b)&&(n=c>d)首判断a>b是否为真,因为a=1,b=2.所以a>b为假。m=0,接着就不进行
n=c>d。故n的值未改变。估是因为&&的原因。
我是抄的。
因为m=(a>b);
解释为:如果a大于b,那么m等于true(即1);否则m等于false(即0);
n=c>d也是这个意思.
再有(m=a>b)&&(n=c>d)首判断a>b是否为真,因为a=1,b=2.所以a>b为假。m=0,接着就不进行
n=c>d。故n的值未改变。估是因为&&的原因。
我是抄的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是B,既然有了括号,就没有什么优先级的比较了,照着算就行了,前面一个表达式得出为false,可以理解为0,后面我是看不太清楚你这是什么表达式=>我是没见过,如楼上所说,前者为0则后则不做运算,也即其值不变
追问
那既然a>b不成立为0,是赋值给了M吗?那M不就为0了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这属于短路表达式,(m=a>b)中a>b不成立,且有&&存在,即不再执行后面的计算,所以n的值没发生变化,n=2,假如(m=a>b)后面为||的话,结果就要执行(n=>d)后才能得到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-07
展开全部
都是正确答案 B
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询