1. ホーム
  2. c++

[解決済み] 数値リテラルに対するULL接尾辞

2023-07-21 01:24:09

質問

このようなコードに出くわしたことがあります。

line += addr & 0x3fULL;

明らかに、'U' と 'L' は 16 進数ではありません。 16 進数の数値リテラルの最後の 'ULL' は "Unsigned Long Long" を意味すると思いますが、正しいですか? (この種のことをグーグル検索するのは非常に困難です) もしそうなら、これは数値のサフィックス修飾子の一種ということでしょうか?

どのように解決するのですか?

からの gcc マニュアル :

ISO C99 では、少なくとも 64 ビット幅の整数のデータ型をサポートしています ( ... )。の整数定数を作るには long long int を作るには、接尾辞 LL を整数に付加する。型の整数定数を作るには unsigned long long int を作るには,接尾辞 ULL を整数に追加します。

これらの接尾辞は、C++でも C++11 で追加されましたが、そのはるか以前からコンパイラの拡張機能としてサポートされていました (ダジャレです)。