ホームページ > バックエンド開発 > C++ > 大きな整数リテラルを `long` 変数に代入するとコード スニペットが失敗するのに、`long long` を使用すると機能するのはなぜですか?

大きな整数リテラルを `long` 変数に代入するとコード スニペットが失敗するのに、`long long` を使用すると機能するのはなぜですか?

DDD
リリース: 2024-11-08 11:12:02
オリジナル
298 人が閲覧しました

Why does the code snippet fail when assigning a large integer literal to a `long` variable, but works when using `long long`?

C/C の 'long long' の動作を理解する

C/C で整数データ型を扱う場合、次のことが重要です。整数表現のニュアンスを理解する。特定のデータ型の 1 つである「long long」では、その動作について疑問が生じることがよくあります。

次のコード スニペットを考えてみましょう。

このコードを実行すると、次のような場合にエラーが発生する可能性があります。コメント行のコメントを解除します:

エラーは次のようになります:

「エラー: 整数定数が long 型には大きすぎます」

ただし、コンパイルして実行すると、この行のコメントを解除せずにコードを実行すると、10000000000 よりも大幅に大きな値が出力されます。なぜですか?

整数リテラルとデータ型について

C/C では、整数リテラルは次の定数です。数値を表します。整数リテラルの型は、「L」や「LL」などの接尾辞によって決まります。接尾辞がない場合、リテラルはデフォルトで 'int' として扱われます。

提供されたコードでは、値 '100000000000' は大きすぎて 'long' データ型で表すことができません。したがって、目的のデータ型を示すサフィックスを追加する必要があります。

リテラルを正しく割り当てる

エラーを解決するには、正しいサフィックスを使用してリテラルを割り当てる必要があります。以下に示すように、

接尾辞 'LL' は、リテラルがより広い範囲の値に対応できる 'long long' 型として扱われる必要があることを示します。

更新された行では、エラーが発生することなく、値「100000000000」が「num3」に割り当てられます。これにより、変数 'num3' が意図した大きな数値を保持し、操作できることが保証されます。

以上が大きな整数リテラルを `long` 変数に代入するとコード スニペットが失敗するのに、`long long` を使用すると機能するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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