この調査は、フレーム パディングを決定するコンテキストで符号付き整数式と符号なし整数式を比較する際に発生した警告を中心に展開します。アスタリスクで囲まれた
質問:
元のコードでは検出されなかったのに、更新されたプログラムで int を string::size_type と比較すると警告が発行されるのはなぜですか?問題は?
答え:
変数の宣言このような警告を回避するには、サイズと比較する場合は unsigned または string::size_type として指定することをお勧めします。比較には正確な型 (例: 文字列の長さと比較する場合は string::size_type) を使用することをお勧めします。
意外な比較:
警告は、異なるものに起因します。符号付き整数と符号なし整数の範囲を指定すると、比較で予期しない結果が発生します。明確にするために、比較を実行する前に、一方の値を他方と互換性のある型に明示的に変換します。
変換の例:
if (i >= 0) { if ((unsigned)i >= u) iIsGreaterThanOrEqualToU(); else iIsLessThanU(); } else { iIsNegative(); }
さらなる説明:
この問題は、書籍「Accelerated C」で後ほど取り上げられるかどうか」については、元の問い合わせでは明示的に言及されていません。
以上がint と string::size_type を比較すると、更新されたコードで警告がトリガーされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。