1

首先,我是 C++ 的初学者,我使用的是 Xcode 4.6.2。编译器配置是默认的。我只将编译器切换到 gcc 4.2。如果我编译我的小代码,我会收到以下警告:

隐式转换将 64 位值缩短为 32 位值隐式转换丢失整数精度:“unsigned long”到“unsigned int”

这是触发警告的代码:

median = temps[temps.size()/2];

提示: temps 是 double 的向量,median 是 double

我必须做些什么来摆脱这些警告?是否可以通过编译器配置来处理这个问题(我不是说禁用警告;-))还是我必须更改我的代码?

4

3 回答 3

1

temps.size()返回(据我所知)一个无符号长,但是2一个(无符号)整数。

尝试

temps[(unsigned long)temps.size()/(unsigned long)2]

或者

temps[(unsigned long)((unsigned long)temps.size()/(unsigned long)2)]
于 2013-05-27T03:03:45.370 回答
0

在项目设置下,转到“LLVM GCC 4.2 - 警告”部分或适合您的编译器的部分,然后选择“禁止所有警告”

于 2013-10-13T00:01:37.870 回答
0

不,我在使用上述编译器“Apple LLVM Compiler 4.2”的 X-CODE 中遇到了同样的问题,它通过使用“unsigned long int”而不是“int”数据类型得到了解决......

于 2014-03-26T19:34:42.760 回答