ホームページ > バックエンド開発 > C++ > int と string::size_type を比較すると、更新されたコードで警告がトリガーされるのはなぜですか?

int と string::size_type を比較すると、更新されたコードで警告がトリガーされるのはなぜですか?

Linda Hamilton
リリース: 2024-11-07 03:39:02
オリジナル
622 人が閲覧しました

Why does comparing an int to string::size_type trigger a warning in the updated code?

符号付き整数式と符号なし整数式の比較: 警告

この調査は、フレーム パディングを決定するコンテキストで符号付き整数式と符号なし整数式を比較する際に発生した警告を中心に展開します。アスタリスクで囲まれた

質問:

元のコードでは検出されなかったのに、更新されたプログラムで 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート