📜  门| GATE-CS-2017(套装2)|第 53 题(1)

📅  最后修改于: 2023-12-03 15:12:44.345000             🧑  作者: Mango

题目描述

以下是一段 C 语言代码,其中 a 和 b 是两个整数变量。写出执行完该段代码后变量 a 和变量 b 中存储的值。如果无法确定,则说明理由。

int a = 5, b = 3;
a = a ^ b;
b = a ^ b;
a = a ^ b;
解题思路

这是一道简单的位运算题目。我们以 a=5b=3 为例进行分析。 在二进制下,a=101b=011。当使用异或运算符 ^ 进行位运算时,同一位置上的两个二进制位相同时,结果为 0;不同时,结果为 1。因此,执行上述代码后,a 和 b 的取值分别会变成:

  • a = 6

    • a ^ b,得到二进制结果为 110,即 6。
    • a = a ^ b,将异或结果存储到 a 中,a 变成 6。
  • b = 5

    • a ^ b,得到二进制结果为 101,即 5。
    • b = a ^ b,将异或结果存储到 b 中,b 变成 5。

因此,最终 a 的值为 6,b 的值为 5。

返回代码
## 题目描述
以下是一段 C 语言代码,其中 a 和 b 是两个整数变量。写出执行完该段代码后变量 a 和变量 b 中存储的值。如果无法确定,则说明理由。
```c
int a = 5, b = 3;
a = a ^ b;
b = a ^ b;
a = a ^ b;
解题思路

这是一道简单的位运算题目。我们以 a=5b=3 为例进行分析。 在二进制下,a=101b=011。当使用异或运算符 ^ 进行位运算时,同一位置上的两个二进制位相同时,结果为 0;不同时,结果为 1。因此,执行上述代码后,a 和 b 的取值分别会变成:

  • a = 6

    • a ^ b,得到二进制结果为 110,即 6。
    • a = a ^ b,将异或结果存储到 a 中,a 变成 6。
  • b = 5

    • a ^ b,得到二进制结果为 101,即 5。
    • b = a ^ b,将异或结果存储到 b 中,b 变成 5。

因此,最终 a 的值为 6,b 的值为 5。