关于c中&的返回值类型

来源:互联网 发布:点雇网 在线全职美工 编辑:程序博客网 时间:2024/05/01 18:22
刚才做移位运算练习发现一个神奇的事。。。
#include <stdio.h>int main() {    int x = 0x80000000;    x = (x & 0xffffffff);    x = x >> 1;    printf("%d", x);    return 0;}

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

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

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