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



这是触发警告的代码:

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

提示: temps是double的 vector ,中位数是double

我该怎么做才能摆脱这些警告?是否可以通过编译器配置(不是要禁用警告;-)来解决此问题,还是必须更改代码?

最佳答案

temps.size()返回(从我能读到的)无符号长整数,但是2是一个(无符号)int。

尝试

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

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

关于c++ - 如何摆脱警告:隐式转换将64位值缩短为32位值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16760023/

10-11 16:28