签署NaN值

Yak*_*kov 5 c printf nan

基于"IEEE"规范:"当输入或结果是NaN时,该标准不解释NaN的符号." 然而,printf版画NaN值签署:nan-nan (?从SPEC)有人点我的一套规则时nan,当-nan印刷例如,我检查了printf(-1.0f)打印-nan 谢谢

Lin*_*cer 6

NaN的底层表示包含一个符号位,这是printf在决定是否应该打印减号时所看到的.

标准之所以应该忽略符号位的原因是允许像negateabsolute这样的东西简单地修改符号位,而不必强制检查输入值是否为NaN.

  • 如果设置了底层表示中的符号位,则`printf`的这个特定实现打印`-nan`.没有标准表明它必须或不应该.C标准没有指定使用特定的浮点实现,或者NaN:s以任何特殊方式运行. (2认同)