if(!sk==1001||!sk==99)
を使うとなぜ
warning C4806: '==' : 安全でない演算: 'bool' 型から 'int' 型への上位変換を
行うと与えられた定数に等しくなりません
というエラーが出るのでしょうか?
使用言語 C++
使用ライブラリ DXライブラリ
環境 Visual C++ 2008 Express Edition
'bool' 型から 'int' 型への上位変換
Re:'bool' 型から 'int' 型への上位変換
#あとからログを見る人のために
演算子の優先順位の関係で
if ((!sk) == 1001 || (!sk) == 99)
と解釈されるためです。
!演算子でboolになってしまってるのに数値(int型)と比較してますけど大丈夫?
とコンパイラが心配してくれているのです。
期待しているのは
if (!(sk == 1001) || !(sk == 99))
ということかと思いますけどこれでは常に成立してしまうので意味が無いですね。
わざわざ二重否定して訳が分からなくなっているように見えます。
ほんとうにやりたかったことは
if (sk != 1001 && sk != 99)
ということでしょうか。
【編集】タグ外の改行がなくなってしまうのでpreタグを削除
演算子の優先順位の関係で
if ((!sk) == 1001 || (!sk) == 99)
と解釈されるためです。
!演算子でboolになってしまってるのに数値(int型)と比較してますけど大丈夫?
とコンパイラが心配してくれているのです。
期待しているのは
if (!(sk == 1001) || !(sk == 99))
ということかと思いますけどこれでは常に成立してしまうので意味が無いですね。
わざわざ二重否定して訳が分からなくなっているように見えます。
ほんとうにやりたかったことは
if (sk != 1001 && sk != 99)
ということでしょうか。
【編集】タグ外の改行がなくなってしまうのでpreタグを削除
