C4800警告ここで説明したように:「 'タイプ':「真BOOLする値を強制的にC4800には実際の値がありますか?マイクロソフトのC++コンパイラで
// C4800.cpp
// compile with: /W3
int main() {
int i = 0;
// try..
// bool i = 0;
bool j = i; // C4800
j++;
}
C4800警告を投げる:
https://msdn.microsoft.com/en-us/library/b6801kcy.aspx
は、このコードが作ります'または' false '(パフォーマンスの警告) "
マイクロソフトは、それが合理的に重要であると考えているようですが、レベル3の警告としていますが、Clangは明らかにそうではないと思っています。それについてのints - あらゆるもの、その最大の警告レベル。
C4800が有効にする価値があると指摘している現実のバグはありますか?
は言葉遣いを読む
ので、問題は、私たちが実際に比較した結果で
j
を割り当てるために欲しかったものかどうかであります: "パフォーマンス警告"。これは、あなたが予想していたよりもいくらか遅い/より高価かもしれないと警告しています。 –パフォーマンスの低下もバグです:)この警告で指摘されているような不快なパフォーマンスの低下がある現実の世界を考えることはできますか? –
まだ見つからない場合は、[この質問](http://stackoverflow.com/questions/206564/what-is-the-performance-implication-of-converting-to-bool-in-c)を参照してください。あなたに興味を持ってください。最初の答えは、「パフォーマンスの警告」が警告が意図しているものではないことを示しているようです。 – jaggedSpire