小编say*_*nel的帖子

隐式转换警告 int 到 int-lookalike

我的编译器对很多隐式转换感到很温暖:

有些我确实理解,比如

implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long')` 
Run Code Online (Sandbox Code Playgroud)

当我做myvector.resize(myInt)

其他比较晦涩难懂的,比如

implicit conversion loses integer precision: 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type' (aka 'unsigned long') to 'int'
Run Code Online (Sandbox Code Playgroud)

当我这样做时myInt=myString.size(),或者

implicit conversion changes signedness: 'int' to 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type' (aka 'unsigned long')
Run Code Online (Sandbox Code Playgroud)

当我打电话时myString[myInt]

在所有情况下,我确实理解为什么我收到这些消息(int-uint 等),但是它们在程序中的使用是明确的。如果我不更改变量类型来删除这些警告,我会面临什么风险?我以前的编译器没有警告我任何东西,所以当我更换电脑时,我突然收到了几十个警告。

c++ signed type-conversion truncation compiler-warnings

3
推荐指数
1
解决办法
1万
查看次数