在Java中,若有变量 `int p = 12;`,执行语句 `p &= (p <<= 1);` 后,`p` 的值是多少?

答案解析

复合赋值运算符的运算顺序是从右向左的。首先执行 `p <<= 1;` 这等价于 `p = p << 1;`。`p` 的初始值为12,二进制表示为 `0000...1100`(假设int类型为32位)。左移一位后,`p` 的值变为24,二进制表示为 `0000...11000`。然后执行 `p &= 24;`这等价于 `p = p & 24;`。24的二进制表示为 `0000...11000`。将 24( `0000...11000`) 和 24(`0000...11000`) 进行按位与操作,结果仍然是24(`0000...11000`)。因此,`p` 的最终值是24。选项D正确。
正确答案:D
随机推荐
开始刷题