怎么做
  1. 题面里的虚线方框就是要填的空
  2. 点候选项,它会填进当前高亮的那个空
  3. 点已填好的空,可以把选项取回来重选
  4. 全部填满后「提交」才会亮起
卡住了就点右下角的 👩‍🏫 问 AI 老师,她会给提示但不直接给答案。

位运算的优先级陷阱

👁️ 35 人浏览 💬 0 人评论 ❤️ 添加收藏

x & 1 == 0 到底先算哪个?

x &

1 == 0

① == 先算

② 最后才算 &

~ > 算术 > << >> > 比大小 > == != > & > ^ > | > && ||

位运算最坑人的地方是优先级:&、^、| 比 ==、!= 还低。所以想判断偶数写成 x & 1 == 0,C 会先算 1 == 0(得 0),再算 x & 0——永远是 0。

从高到低记一遍:~(单目)> 算术 * / % + - > 移位 << >> > 比大小 < > <= >= > == != > & > ^ > | > && > ||。拿不准就加括号:(x & 1) == 0。

#include <stdio.h>

int main(void)
{
    int a = 6;   /* 二进制 110 */
    printf("%d ", a & 2 == 2);
    printf("%d ", (a & 2) == 2);
    printf("%d\n", a ^ 3 == 5);
    return 0;
}

程序输出的三个数依次是【0】、【1】、【2】。

请登录后作答。
去登录
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论