据我所知,C应该将0xfe转换为-2,所以返回值应该是ceil(x)-2-但是函数似乎都不返回这些值。什么应该返回?
为这个新问题道歉。我不是一般的C程序员。只是学习hex和C。

最佳答案

在C语言中,0xfe是十六进制的文本。具体来说,它等于int,因此结果是双精度值254
如果显式转换为ceil(x) + 254.0或其他8位有符号类型,如下所示:

(int8_t)0xfe

然后你可能会得到-2的值,但这不是标准所保证的。这是因为int8_t具有值254,该值在带符号的8位字段中不可表示,因此本标准第6.3.1.3节中的最后一条规则适用:
否则,将对新类型进行签名,并且不能在其中表示该值;结果是实现定义的,或者引发实现定义的信号。
如果需要值0xfe,请写入-2

10-03 00:23