假设有如下Java代码片段: `int a = 1, b = 2; boolean c = (a = b) == 2 ? a++ > 1 : b-- > 1;`,执行后,变量 `a`, `b` 和 `c` 的值分别是多少?
答案解析
首先, `(a = b)` 会将 `b` 的值 2 赋给 `a`,所以此时 `a` 的值变为 2。然后判断 `(a = b) == 2`,即 `2 == 2`,结果为 true。因此,执行三元运算符的第一个表达式 `a++ > 1`。此时,会先比较 `2 > 1`,结果为 true, 然后 `a` 自增变为 3. 整个表达式的返回值是true,所以 `c` 的值为true. b的值始终为2未被更改。因此,a=3, b=2, c=true。选项A错误,b的值为2,且c为true;选项C错误,a的值为3;选项D错误,b的值为2且c为true。
正确答案:B