#define PRINTX printf("%d\n", x) main() { int x = 2, y, z; x *= 3 + 2; PRINTX; x *= y = z = 4; PRINTX; x = y == z; PRINTX; x == ( y = z ); PRINTX; }
这个考查的就是操作符的优化级和关联规则。第一题,*=赋值操作符优先级低于算术操作符+,所以x=10。第二题中,赋值操作符连续赋值,所以x=40。第三题中,==是逻辑操作符,优先级高,所以x=1。第四题中,括号优先级最高,而==不改变x的值,所以x值不变为1。
优先级参考:
=、*=为14;+为4;()为1。
未经允许不得转载:TacuLee » C语言解惑之赋值操作符