首页 > 解决方案 > 如何在编译器上获得不同的结果?

问题描述

Ans 我得到7 2但我期待7 7,因为在线b = b ^ a;值 a is7和 b is5 然后b ^ a应该7是然后分配给b.

#include <stdio.h>

int main() {
    int a = 2, b = 5;
    a = a ^ b;
    b = b ^ a;
    printf("%d %d", a, b);
    return 0;
}

PS:-对不起,我认为^是| . 如果可能,请删除这个不必要的问题。

标签: cbit-manipulationbitwise-operators

解决方案


让我们一步一步来

int a = 2, b = 5;  // a = 0b010, b = 0b101
a = a ^ b;         // a = 0b111, b = 0b101
b = b ^ a;         // a = 0b111, b = 0b010

所以我们有a = 7and b = 2,这里没有魔法。

仅供参考这里是^操作表

 ^ 0 1
 0 0 1
 1 1 0

推荐阅读