在C编程中,我发现了一个奇怪的问题,这反驳了我的直觉.当我声明a integer为INT_MAX(2147483647在limits.h中定义)并将其隐式转换为float值时,它工作正常,即浮点值与最大整数相同.然后,我将浮动转换回整数,发生了一些有趣的事情.new integer成为最小整数(-2147483648).
源代码如下所示:
int a = INT_MAX;
float b = a; // b is correct
int a_new = b; // a_new becomes INT_MIN
Run Code Online (Sandbox Code Playgroud)
我不确定浮点数b转换为整数时会发生什么a_new.那么,有没有合理的解决方案来找到可以在其间切换的最大值integer和float类型?
PS:INT_MAX- 100 的值工作正常,但这只是一个随意的解决方法.