Visual C ++不一致缩小转换警告

时间:2017-05-26 12:16:32

标签: c++ visual-c++ visual-studio-2015

在Visual Studio 2015中,编译器(Visual C ++ 14.0)警告缩小转换(在警告级别4)。这是一个很好的功能,但似乎并未始终如一地应用。

例如,在以下代码中:

short bar(short s) {
  return s * 2;
}

short foo(short s) {
  int i = s * s;
  return i; // warning C4242
}

short baz(short s) {
  s *= 2;
  return s;
}

所有三个函数应具有相同的效果(以整数精度计算乘法,然后将结果缩小为简短),但仅为foo发出警告:警告C4242:' return' :从' int'转换短缺'可能会丢失数据。

这是编译器的不一致,还是我的误解?有没有办法可以获得更多警告?

0 个答案:

没有答案