首先,我是c ++的初学者,我正在使用Xcode 4.6.2。编译器配置是默认的。我只将编译器切换到gcc 4.2。 如果我编译我的小代码,我会收到以下警告:
隐式转换将64位值缩短为32位值 隐式转换失去整数精度:'unsigned long'到'unsigned int'
这是代码,它会触发警告:
median = temps[temps.size()/2];
提示: temps是double的向量,中位数是double
我必须做些什么才能摆脱这些警告?是否可以通过编译器配置来处理这个问题(我不是说禁用警告;-))或者我是否必须更改我的代码?
答案 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"数据类型......