高精度转换低精度问题
main()
{
double m=65536;
double n=65535;
printf("\n%d,%d",(int)m,(int)n);
为什么输出结果是:0,-1
请各位帮忙解答,谢谢了
[解决办法]
楼主用的是 16位编译器(如Turbo C2.0)吧?
在16位的系统下 int 的取值范围是-32768到32767
你自己再算下就好 注意32767+1 之后就变为-32768了
发布时间: 2012-03-27 13:44:24 作者: rapoo
高精度转换低精度问题
main()
{
double m=65536;
double n=65535;
printf("\n%d,%d",(int)m,(int)n);
为什么输出结果是:0,-1
请各位帮忙解答,谢谢了
[解决办法]
楼主用的是 16位编译器(如Turbo C2.0)吧?
在16位的系统下 int 的取值范围是-32768到32767
你自己再算下就好 注意32767+1 之后就变为-32768了