在C++中是否定义了无符号(-0.0)的行为?

Jef*_*den 7 c++ floating-point type-conversion language-lawyer

C++ 11 4.9浮动积分转换[conv.fpint]:

可以将浮点类型的prvalue转换为整数类型的prvalue.转换截断; 也就是说,丢弃小数部分.如果截断的值无法在目标类型中表示,则行为未定义.

如果值是-0.0,是否定义了行为?它归结为"截断值是否无法在目标类型中表示".零可以代表.可以负零吗?在这种情况下,两个零值是区分还是不区分?

Ada*_*son 11

截断值-0.0is 0,可以用整数类型表示(包括无符号整数类型).没有理由认为截断的值-0.00.0是不同的,只是截断的值-0.250.3不同.

  • @JeffWalden:没有正面签名的零_value_.在这种情况下,值是数学值. (2认同)