条件运算符与逗号运算符

来源:百度知道 编辑:UC知道 时间:2024/07/02 11:51:47
int a=3;
a=('m'>'n')?a+2:a-2,a+3,3*a的值之后,a的值

逗号运算符优先级最低,所以这个表达式实际上是

(a=('m'>'n')?a+2:a-2),a+3,3*a
'm'<'n',所以执行的是a=a-2=3-2=1
后面的a+3,3*a都没有发生赋值,所以最终a=1

这关于优先级的问题
昨晚看了下书,终于解惑了

a=a-2,a+3,3*a

像这个 =的优先级比,高 先算=
所以a=a-2=1
a=(a-2,a+3,3*a)
像这个
因为()的优先级比=高,先算()
里面是一个逗号表达式,
一个一个的算a-2=1,a+3=2,3*a=6
最后把6赋给a
a=6

没什么难理解的了,
把心思防在优先级问题上就可以解决