c - 如何在编译器上获得不同的结果?
问题描述
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:-对不起,我认为^是| . 如果可能,请删除这个不必要的问题。
解决方案
让我们一步一步来
int a = 2, b = 5; // a = 0b010, b = 0b101
a = a ^ b; // a = 0b111, b = 0b101
b = b ^ a; // a = 0b111, b = 0b010
所以我们有a = 7
and b = 2
,这里没有魔法。
仅供参考这里是^操作表
^ 0 1
0 0 1
1 1 0
推荐阅读
- javascript - Cryptojs AES解密字节数组的密钥和iv结果在javascript中为0
- blazor - 当另一个选择选项更改时,如何将所选选项更改为默认值?
- react-native - 如何从 Firestore 获取本地反应的日期?
- flutter - Sliver 上的尺寸转换
- google-cloud-platform - 使用服务帐户从广告脚本调用 AdWords 和 BigQuery 的网址是什么?
- marklogic - 地理空间数据库的数据格式和原始类型
- javascript - math.random() 和比较运算符说明
- javascript - Javascript:是否可以让“dynamicListener”文件访问您的主 javascript 文件?
- javascript - 使用从模态添加的信息更新单元格表
- vue.js - 更改使用插槽生成的子组件的样式