1
3
你几乎可以肯定地除以0
一个简单的程序
还有指纹
在我的系统上。
所以,你应该检查一下
@克里斯托:即使左手是零,C++仍然会评估乘法的右手边。结果不重要 应该是 零;重要的是
福
被调用和计算并导致错误。
样本来源:
输出:
|
2
1
你有可能被0除吗?可能是整数除以0作为“浮动异常”出现。
当你拥有
你认为它会
|
3
1
虽然我没有告诉您浮点异常的确切原因,但我可以提供一些信息,您可能会发现有助于调查将来的浮点错误。我相信 Mark 已经解释了你为什么会有这个问题。 确定是否发生浮点异常条件及其原因的最可移植的方法是使用 fenv.h . 中定义了11个函数 fenv.h 用于操作浮点环境(请参见 fenv(3) man page )你也可能会发现 this article 引起兴趣。
在符合POSIX的系统上,
|
4
0
当我建议用乘法1或0替换分支时,我没有考虑到if语句可能会防止数值异常。乘法技巧仍然对表达式求值,但实际上会将其丢弃。对于足够小的表达式,这样的技巧比条件更好,但必须确保表达式可以求值。
如果稍微变换分母,仍然可以使用乘法技巧。
而不是
很抱歉,但请注意我的建议,我不知道你计划的所有细节。另外,我喜欢用“聪明的”布尔表达式替换分支 |
tender · 基于布尔限定符的Python熊猫if语句 6 年前 |
user3663055 · 尽管有适当的布尔值,但代码不会打印 6 年前 |
merko · 检查布尔值-Javascript 6 年前 |
user6631314 · IOS/核心数据/目标-C:使用布尔值预测 6 年前 |
user1032531 · 符号极性的自然键 6 年前 |
Bartholomas · Python语句中的布尔逻辑 6 年前 |
Dustin Michels · 理解字符串的真实性 6 年前 |
user44840 · 熊猫数据帧阈值--如果超过,则保持数字固定 6 年前 |