数値を比較しようとしました」というのもコンパイルは通るけど警告が出るというものの一つです。このような警告が表示されてしまうのか解説していきます。数値を比較しようとしました」が発生する原因と解決方法この警告は扱える数値の範囲が異なるsigned変数とunsigned変数の2つを比較した際に発生します。}あれれ?明らかに-100は0より小さいにもかかわらず実行結果がおかしくなっています。この警告を解消したい場合は変数の型を統一するようにしましょう。このような挙動になってしまう原因C/C++には符号なしと符号ありの2種類があることは知っていますか?符号ありと符号なしでは扱える数値の範囲が異なっており、int型の場合だと以下のようになります。4,294,967,295範囲はこの様になっており、範囲外の値を代入・使用しようとするとオーバーフロー・アンダーフローが発生します。オーバーフローとはコンピュータの演算において数値型が表現可能な値の上限を超えること、およびそれによって発生したエラー。「桁あふれ」ともいう。対義語はアンダーフロー。以下のサンプルコードを見てください。}-1004294967196一見すると普通のコードに見えるかもしれませんが、変数a(-100)をマイナスの値を扱えない符号なしint型変数bに代入した影響でアンダーフローが発生しています。数値を比較しようとしました」という警告が表示されるのです。気づきにくいバグになりやすいので、C4018警告が表示された場合は気付き次第すぐに修正するようにしましょう。560の極意C/C++の関数の使い方はわかるけど、どういう場面で使うのかいまいちわからない...そういう方に相性抜群の逆引きリファレンス。逆引き系を一冊も持っていないというもったいないことはしていませんよね?リファレンスブックを持っていない方は要チェック。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。デベリング.ホーム検索タイトルとURLをコピーしました。