-2 <1 =假.为什么?

Ant*_*rra 4 unsigned if-statement objective-c

海兰!抱歉我的英语不好,无论如何问题是:

我在objective-c中有这个代码:

unsigned int a = 1; 
int b = -2
if (b < a);
Run Code Online (Sandbox Code Playgroud)

我希望是真的,而不是结果if(b < a)是假的,为什么?

Eme*_*ger 9

C在比较中自动将-2转换为unsigned int.结果是比较实际上是(4294967294 <1),但事实并非如此.


SRM*_*SRM 7

您正在比较已签名和未签名.签名值被提升为无符号,这导致大量(0xFFFFFFFD我认为)肯定大于1