int

32位INT数据类型可以将整数值保持在-2,147,483,648至2,147,483,647。您也可以将此数据类型称为已签名的INT或已签名。

unsigned int

32位未签名的INT数据类型可以将整数值保持在0到4,294,967,295的范围内。您也可以将此数据类型简单地称为未签名。

好的,但是,实际上:

int x = 0xFFFFFFFF;
unsigned int y = 0xFFFFFFFF;
printf("%d, %d, %u, %u", x, y, x, y);
// -1, -1, 4294967295, 4294967295

没有区别,O.O。我有点困惑。

答案

呵呵。您在这里有一个隐性的演员printf期望什么类型。

试试尺寸的尺寸:

unsigned int x = 0xFFFFFFFF;
int y = 0xFFFFFFFF;

if (x < 0)
    printf("one\n");
else
    printf("two\n");
if (y < 0)
    printf("three\n");
else
    printf("four\n");

来自: stackoverflow.com