a是带符号的int并且包含-100 b是unsigned int并且包含500
a<b returns FALSE!!
Run Code Online (Sandbox Code Playgroud)
为什么到地球?:P
我可以将b转换为signed int并获得正确的结果,但是保持原样而不是结果让我感到惊讶,因为我不知道为什么-100 <500应该是假的,就像编译器转换为无符号类型一样自动(这显然不是程序员要求的).
如果我们保持原样,即第一个签名和第二个未签名,那么为什么要这样做
这真的很混乱.
现在我必须纠正我的所有代码,寻找有符号和无符号整数之间的比较,并将这两个变量转换为我的意思.: - /
在混合有符号和无符号类型时,我还需要注意其他任何情况吗?
请不要回答显而易见的"一般情况下使用无符号类型是不可取的,为什么不坚持只使用签名类型?你会更安全".谢谢.
干杯.