'bool' 型から 'int' 型への上位変換

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kokuoutyou

'bool' 型から 'int' 型への上位変換

#1

投稿記事 by kokuoutyou » 14年前

if(!sk==1001||!sk==99)
を使うとなぜ
warning C4806: '==' : 安全でない演算: 'bool' 型から 'int' 型への上位変換を
行うと与えられた定数に等しくなりません
というエラーが出るのでしょうか?

使用言語 C++
使用ライブラリ DXライブラリ
環境 Visual C++ 2008 Express Edition

初級者

Re:

#2

投稿記事 by 初級者 » 14年前

回答するための情報が足りません。

例えば、skの型は何ですか?

kokuoutyou

Re:

#3

投稿記事 by kokuoutyou » 14年前

skはキー入力したやつを格納するやつ(数値)
別の方法ほ使って解決しました
回答ありがとうございました

ISLe

Re:'bool' 型から 'int' 型への上位変換

#4

投稿記事 by ISLe » 14年前

#あとからログを見る人のために
演算子の優先順位の関係で
if ((!sk) == 1001 || (!sk) == 99)
と解釈されるためです。
!演算子でboolになってしまってるのに数値(int型)と比較してますけど大丈夫?
とコンパイラが心配してくれているのです。

期待しているのは
if (!(sk == 1001) || !(sk == 99))
ということかと思いますけどこれでは常に成立してしまうので意味が無いですね。
わざわざ二重否定して訳が分からなくなっているように見えます。

ほんとうにやりたかったことは
if (sk != 1001 && sk != 99)
ということでしょうか。

【編集】タグ外の改行がなくなってしまうのでpreタグを削除 画像

閉鎖

“C言語何でも質問掲示板” へ戻る