ホームページ > バックエンド開発 > C++ > C および C の符号なし整数リテラルがより大きな型に昇格するのはなぜですか?

C および C の符号なし整数リテラルがより大きな型に昇格するのはなぜですか?

Patricia Arquette
リリース: 2024-12-12 19:30:15
オリジナル
702 人が閲覧しました

Why Do Unsigned Integer Literals in C and C   Promote to Larger Types?

サフィックスのない整数: 必要に応じてより大きな型に昇格

元のクエリでは、100 億までの反復で予期しない動作が発生する理由を調査しました。 1 つの疑惑は、サフィックスのない整数リテラルがデフォルトで通常の int 型にならないのではないかということでした。

C と C の両方で、そのようなリテラルは自動的に適合する整数型に昇格されます。これにより、使用可能な整数型の少なくとも 1 つの制限内で値を表現できることが保証されます。

C および C 標準

C 11 標準に従って ( [lex.icon] ¶2) および C99 標準 (§6.4.4.1)、 suffix には、その値を収容できる次のリストから最小の型が与えられます:

  • int
  • long int
  • long long int

100億の場合、この整数定数はlong int (longの場合はlong long int)として分類されます。 int は 32 ビットとして定義されています)。

大きすぎるリテラルのコンパイル エラー

C99 と C 11 の両方で、リテラルがすべての許容される整数の表現可能な範囲を超えていると記載されています。型を指定するとコンパイル エラーが発生します。ただし、一部のコンパイラは、余分な桁を暗黙的に切り詰めたり破棄したりするなど、非標準的な方法でこれを処理する場合があります。

以上がC および C の符号なし整数リテラルがより大きな型に昇格するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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