gpt4 book ai didi

c - 奇怪的位移行为

转载 作者:太空狗 更新时间:2023-10-29 16:23:26 27 4
gpt4 key购买 nike

我有以下有效的 C 代码:

int ex(unsigned int x) {
int mask = 0x55555555;
int a = ((x >> 0) & mask );
return a + ((x >> 1) & mask );
}

但是,当我将其展开为这个时,我得到了不同的结果:

int ex(unsigned int x) {
int mask = 0x55555555;
int a = ((x >> 0) & mask );
int b = ((x >> 1) & mask );
return a + b;
}

造成这种差异的原因是什么?

编辑:请注意,我正在为 32 位编译它。

最佳答案

What is the reason for this difference?

第一个st 片段返回两个unsigned 相加的结果,结果被(隐式)转换为int

第二个nd 片段返回两个int 相加的结果。


关于“常用算术转换”的更多信息:

关于c - 奇怪的位移行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46368586/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com