ces*_*sss 1 c floating-point language-lawyer
我知道0.0 == -0.0
C 标准所说的if(a)
相当于if(a!=0)
,但是:
保证按标准if(-0.0)
评价吗?如果评估为真,false
那么实现会出现错误吗?if(-0.0)
我想这里的关键点是是否必须将if(a!=0)
的含义理解为与浮点中if(-0.0)
完全相同的运算符,在这种情况下可以保证它一定是错误的。!=
C 2018 6.8.4.1 指定了语句的行为if
及其if \xe2\x80\xa6 else
形式。第 2 段说:
\n\n在这两种形式中,如果表达式与 0\xe2\x80\xa6 比较不等于,则执行第一个子语句
\n
根据 C 2018 5.2.4.2.2 中的浮点模型第 2 和第 3 段(其中包含数学排版,我不会在这里重现,但说浮点数是通过将符号 +1 或 \xe2\x88\x921 乘以来定义的浮点基数的缩放幂及其每个数字的总和(每个数字均根据其位置进行适当缩放),\xe2\x88\x920 的数学值为零,与 +0 相同,因此比较等于零。因此if (-0.)
不会执行第一个子语句。
归档时间: |
|
查看次数: |
138 次 |
最近记录: |