C++代码Linux运行结果和Windows不同

最近在测试过程中发现Windows下面的运行结果和Linux下面的运行结果不一致,windows下测试通过,但Linux结果不对,在检查输出数据以及代码之后,并没有发现不同之处,后面想到abs(), min(), max()等函数在不同编译环境下其作用可能不同,更改后问题得到解决。
比如:
std::abs()包括std::abs(int), std::abs(float), std::abs(long long)等,但abs()有可能只有abs(int)一种形式,导致abs(float)返回的值永远为0

原因

在代码中有一句是abs(threshold), 其中threshold为double类型,在Windows下正常转换了,但在Linux下结果一直为0,导致错误。

解决措施

abs()更改为std::abs()

posted @ 2022-06-14 22:10  半夜打老虎  阅读(1161)  评论(0)    收藏  举报