为什么不经常使用无符号变量?

Ale*_*sky 5 .net c#

似乎无符号整数对方法参数和类成员非常有用,它们永远不应该是负数,但我没有看到很多人以这种方式编写代码.我自己尝试过,发现需要从int转换为uint有点烦人...

无论如何你对此有何想法?

重复

为什么Array Length是Int而不是UInt?

Leo*_*das 6

这个想法,即unsigned会阻止你处理不应该处理负值的方法/成员的问题,这有点有些缺陷:

  • 现在你必须检查大值('溢出'),以防出现错误
    • 而你可以用签名检查<= 0
  • 在你的方法中只使用一个signed int,你又回到了"签名":)

处理位时使用无符号.但是今天不要使用比特,除非你有很多这样的比特,它们填满了几兆字节或者至少你的小嵌入式内存.


Sim*_*n P 4

使用标准版本可能可以避免转换为未签名的版本。在你的代码中,你可能可以保持这种区别,但是很多其他输入和第 3 方库不会,因此转换只会让人发疯!