C++标准是否定义了将float类型的NaN转换为double类型,或将double类型的NaN转换为float类型的行为,还是其结果是由具体实现定义或未定义的?我关注的实际架构是带有GCC的x86-64,但我希望能够更广泛地理解该问题。
在C++标准中没有明确说明NaN的转换,因此需要依靠标准转换。特别地,float可以提升为double且值不变,而将double转换为float时,如果值能够在较小类型中表示,则保持相同的值。由于两种类型都支持NaN,因此值应该仍然是NaN。