小编use*_*761的帖子

有符号/无符号比较会产生意外结果

a是带符号的int并且包含-100 b是unsigned int并且包含500

a<b returns FALSE!!
Run Code Online (Sandbox Code Playgroud)

为什么到地球?:P

我可以将b转换为signed int并获得正确的结果,但是保持原样而不是结果让我感到惊讶,因为我不知道为什么-100 <500应该是假的,就像编译器转换为无符号类型一样自动(这显然不是程序员要求的).

如果我们保持原样,即第一个签名和第二个未签名,那么为什么要这样做

这真的很混乱.

现在我必须纠正我的所有代码,寻找有符号和无符号整数之间的比较,并将这两个变量转换为我的意思.: - /

在混合有符号和无符号类型时,我还需要注意其他任何情况吗?

请不要回答显而易见的"一般情况下使用无符号类型是不可取的,为什么不坚持只使用签名类型?你会更安全".谢谢.

干杯.

c c++ visual-c++

0
推荐指数
1
解决办法
138
查看次数

标签 统计

c ×1

c++ ×1

visual-c++ ×1