选择题

设有定义: int x=11,y=12,z=0;, 以下表达式值不等于 12 的是(     )。

【正确答案】 D
【答案解析】

逗号表达式的计算过程是从左到右逐个求每个表达式的值, 取最右边一个表达式的值作为该逗号表达式的值。 赋值运算结合性为由右向左结合, 赋值运算符左值为变量, 右值为变量或常量或表达式, 且左右两边数据类型相同才能实现赋值。 成功实现赋值后以左值为返回值。 逻辑表达式成立则返回 1, 不成立返回 0。 D 选项逻辑表达式 x==y 不成立, 则 z=0, 表达式值为 0。 B 选项中的赋值运算符优先级大于逗号运算符, 因此 x 赋值给 z, z=11, 再计算逗号表达式, 取后面一个值 y 作为表达式值。 C 选项逗号表达式(x,y)取 y 值为表达式值, 然后赋值给 z=12, 表达式值为 12。 A 选项逗号表达式(z,x,y)取 y 值为表达式值 12。 答案选择 D 选项。