同一个程序在Windows下与Linux下的运行结果不同
发布时间:2008-06-01 10:45:52来源:红联作者:zhania
最近,本人用C语言写了一个数值计算的小程序,为了加快调试速度,除了在本机Linux上运行,还在其它的一些Windows平台上运行。在Linux上的编译器用的是g++,Windows平台下用的编译环境是Visual Stdio2005。最后在Windows上调试通过,就直接把源代码从Windows下直接拷到Linux平台下面运行,可是却发现在Linux下运行的结果完全不一样。只好在Linux下继续调试,用GDB单步跟踪,仍然没有发现问题出在哪里。最后折腾了整整一天,万不得已,只好同时打开Windows下的Visual Stdio2005调试窗口和Linux下GDB同时单步跟踪。才发现两种编译环境对求绝对值函数abs的返回值不一样。在Visual Stdio2005下自动地根据参数类型调用重载函数fabs(),而在g++下?然是abs(),对于浮点类型数的绝对值直接转换成了整型数,所以导致结果相差很大。