1
63
我很高兴找到 a good conversation 在这个问题上,我以前没有认真考虑过。 总之,有符号是一个很好的一般选择——即使你已经死了,也要确定所有的数字都是正数——如果你要对变量做算术运算的话(比如在典型的for循环情况下)。 如果你要做屏蔽之类的按位运算,无符号开始变得更有意义。或者,如果你不顾一切地想利用符号位获得额外的正范围。 就我个人而言,我喜欢签名,因为我不相信自己能保持一致,避免混淆这两种类型(就像文章警告的那样)。 |
2
9
在上面的例子中,当“i”总是正的并且范围越大越好时,无符号就越有用。例如,如果您使用的是“declare”语句,例如:
尤其是当这些值永远不会改变的时候。 但是,如果你正在做一个会计程序,人们对他们的钱不负责任,而且经常处于赤字状态,你肯定会想使用“签名”。 我同意Saint的观点,不过一个很好的经验法则是使用签名,C实际上默认使用签名,所以你被覆盖了。 |
3
7
C和C++编译器将在比较有符号和无符号类型时生成警告;在示例代码中,不能使循环变量未签名,并且编译器在没有警告的情况下生成代码(假设已打开警告)。 很自然,您编译时会一直打开警告,对吗? 而且,您是否考虑过使用“将警告视为错误”进行编译,以便进一步了解这一点? 使用有符号数字的缺点是,有一种诱惑,使它们过载,例如,值0->n是菜单选择,而-1表示没有选择任何内容,而不是创建一个具有两个变量的类,一个用于指示是否选择了某个内容,另一个用于存储选择内容。在你意识到之前,你在到处测试一个否定的菜单,而编译器抱怨你想如何将菜单选择与你拥有的菜单选择数量进行比较,但这是危险的,因为它们是不同的类型。所以不要这样做。 |
4
7
|
5
7
我认为如果你的商业案例规定负数无效,你会 希望 显示或抛出错误。
考虑到这一点,我最近才发现在处理二进制文件中的数据并将数据存储到数据库中的项目时有无符号整数。我故意“破坏”二进制数据,结果得到的是负值而不是预期的错误。我发现即使转换了值,该值对我的业务案例也是无效的。
|
Terio · Typescript:使用变量的值创建自定义类型 1 年前 |
Kareem Adel · 创建函数类型(TypeScript接口) 2 年前 |
MatÄj VondráÄek · 如何在c#方法中传递类型? 2 年前 |
kreo · 为什么&[T]参数也接受&Vec? 6 年前 |
Jiji · 将简单对象强制转换为简单的通用接口 6 年前 |