如何摆脱警告:隐式转换将64位值缩短为32位值

时间:2013-05-26 14:06:55

标签: c++ xcode 32bit-64bit compiler-warnings implicit-conversion

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

  

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

这是代码,它会触发警告:

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

提示: temps是double的向量,中位数是double

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

3 个答案:

答案 0 :(得分:1)

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

尝试

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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