【发布时间】:2010-10-05 10:48:40
【问题描述】:
我知道,这个问题似乎很奇怪。程序员有时想得太多。请继续阅读...
在 C 语言中,我经常使用 signed 和 unsigned 整数。我喜欢这样一个事实,即如果我执行诸如将有符号整数分配给无符号变量之类的操作,编译器会警告我。如果我比较有符号整数和无符号整数等等,我会收到警告。
我喜欢这些警告。他们帮助我保持我的代码正确。
为什么我们对花车没有同样的奢侈?平方根绝对不会返回负数。还有其他地方负浮点值没有意义。无符号浮点数的完美候选者。
顺便说一句 - 我并不热衷于通过从浮点数中删除符号位来获得额外的精度。我对floats 非常满意,就像他们现在一样。我只是想有时将浮点数标记为无符号,并得到与整数相同的警告。
我不知道任何支持无符号浮点数的编程语言。
知道为什么它们不存在吗?
编辑:
我知道 x87 FPU 没有处理无符号浮点数的指令。让我们只使用签名的浮点指令。滥用(例如低于零)可能被视为未定义行为,就像未定义有符号整数溢出一样。
【问题讨论】:
-
有趣,你能发布一个签名类型检查有用的例子吗?
-
litb,你的评论是针对我的吗?如果是这样,我不明白
-
Iraimbilanja 是的 :) 晶圆厂不能返回负数,因为它返回其参数的绝对值
-
对。我没有问假设的 unsignedfloat 如何帮助正确性。我问的是:在什么情况下 pipenbrinck 发现 Int 签名类型检查有帮助(导致他为浮点数寻求相同的机制)。我的原因问是我发现无符号在类型安全方面完全没用
-
范围内检查有一个无符号微优化:((unsigned)(p-min))
标签: c types floating-point format unsigned