首先,我是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/