c语言中语句中 "连等" 问题

问题1
int a,b=2,c=4;
a=b=c;
a=?
b=?

问题2
int a,b,c,d;
b=2;c=3;d=4;
a=b>=c?d:b;
a=?
b=?

以上两题求,a,b的值。

这两题关键两点:
1.运算符的优先级跟结合性。
2.一个赋值表达式是有值的,值就是被赋的值,比如a=3 ,这个赋值表达式的值就是3,若有b=(a=3),则b的值为3.

第一题:a=b=c中只有一个运算符,等号,所以优先级是一样的,而等号的结合性是从右向左的(也就是等式从右往左计算),所以a=b=c 等同于 a=(b=c),故a=4,b=4;

第二题:

优先级 : 关系运算符>"?:">赋值运算符,
故a=b>=c?d:b 等价雨 a= ( (b>=c)?d:b );
所以 a=2,b=2;

关于运算符的优先级可以参考
http://baike.baidu.com/view/262524.html
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-02
连等关键有两点:
1、运算符的优先级跟结合性。
2、一个赋值表达式是有值的,值就是被赋的值,比如a=3 ,这个赋值表达式的值就是3,若有b=(a=3),则b的值为3.
例如:
a=b=c中只有一个运算符,等号,所以优先级是一样的,而等号的结合性是从右向左的(也就是等式从右往左计算),所以a=b=c 等同于 a=(b=c),故a=4,b=4;
第2个回答  2010-08-19
第一题
a=4,b=4。赋值语句是将C的值分别赋给a和b
第二题
a=2,b=2。a=b>=c?d:b等价于a=((b>=c)?d:b)其中b>=c为假则((b>=c)?d:b)的值为b的值,然后将b的值赋给a。因此a=2,b=2
第3个回答  2010-08-19
问题1可能是a=4,b=4
问题2是a=b=2
第4个回答  2010-08-19
1:a=4;b=4;
2: a=2;a=2.
相似回答