1、 a = 1?b = 1:b = 0 的结果是b=1,因为在C语言中,条件运算符的优先级比赋值运算符的优先级高,所以运算顺序其实是: a = ( 1?b = 1:b = 0 ) 这样写就很清楚了:1显然是真值,所以结果就是 b = 1 这句执行之后,a同时也得到了1的值;
2、赋值运算符的结合性是从右到左的,因此: a *= a /= a- b 计算顺序是 a *= (a /= a- b ) 先计算 a /= a-b,得到 a=8/(8-4.5)=8/3.5=2 (因为a是int型,所以结果自动类型转换为int) 这时 a=2,再做 a*= 2,得到的a的值就等于4了。