映客等等怎么那么有钱:有关C语言的问题的

来源:百度文库 编辑:高校问答 时间:2024/04/30 11:07:26
设有:int a=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)后n的值为___ 。
A)1 B)2 C)3 D)4
为啥是B呀 我是C语言初学者 不懂 请各位指点一下 本人不胜荣幸 请各位以初学者的角度方面解释呀 尽量详细明白点

这句话的运算顺序是
(m=(a>b)) && (n=(c>d));
a>b为假,即为0,而m=2,不等于0,所以m=(a>b)的结果为假,在C里,作&&时,如果左边为假,那么结果肯定为假,则右边的操作就不执行了,所以n仍为2.

其实,按运算符的优先级,写成((n=c)>d),它省略了(n=c)的括号而已,前面半句也一样

C因为&&是和的意思前面a>b是假所以后面不执行运算应为n=2.

根据运算符的优先级和结合性,以及&&如果前面是假后面就不执行的原理,可以得出 C因为&&是和的意思前面a>b是假所以后面不执行运算应为n=2.
回答者:301050304 - 经理 四级 5-23 17:10
的结论.

关系运算符的优先级大于赋值运算符,a>b为假,故m=0,&&是“与”的意思。
1&&1=0,1&&0=0,0&&0=0,0&&1=1.因(m=a>b)==0,故n=c>d已无需计算,所以n==2

C因为&&是和的意思,前面a>b是假,所以后面(n=c>d)不被执行运算,所以n不变,还为2.