据我所知,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
。