关于c中&的返回值类型

刚才做移位运算练习发现一个神奇的事。。。
#include 
int main() {
    int x = 0x80000000;
    x = (x & 0xffffffff);
    x = x >> 1;
    printf("%d", x);
    return 0;
}

这段代码输出的结果是一个负数,符合有符号数的算术右移,但如果把代码稍微改动成
#include 
int main() {
    int x = 0x80000000;
    x = (x & 0xffffffff) >> 1;
    printf("%d", x);
    return 0;
}

输出的结果就成了一个整数,是无符号数逻辑右移的结果。

猜测&运算的返回值为一unsigned int值。。。

你可能感兴趣的:(计算机系统学习)