计算机如何比较底层的两个数字?

Mr.*_*key 2 c

我编写了如下代码:

int a = -1;
unsigned int b = 0xffffffff;

if (a == b)
    printf("a == b\n");
else
    printf("a != b\n");

printf("a = %x b = %x\n", a, b);
return 0;
Run Code Online (Sandbox Code Playgroud)

结果如下:
在此输入图像描述

它表明a和b是相等的.所以我想知道计算机如何做出判断?

Joh*_*ell 5

在带有符号整数a和无符号整数b作为操作数的任何算术运算中,a将隐式转换为unsigned.由于-1签署在这种情况下0xffffffff无符号的,一个b进行比较相等.