他のタイプとは異なり:"int"、"boolean"、"double" など。カスタム クラスでさえ、1 つの単語しかありません。その型には 1 つの単語しかありませんが、その整数だけが 2 つの単語を使用しています。どのように、そしてなぜそれが特別なのですか?
5 に答える
C 型の命名スキームは、最終的に古き良き Algol を継承しているように見えます。これは、int
orのような型の前に任意の数の「短い」または「長い」プレフィックスを許可していreal
ました (浮動小数点数の名前です)。もちろん、それらの解釈は実装に依存しており、long long long int
実際に よりも大きいという保証はありませんでしlong int
た。
C は接頭辞を継承しました (少なくとも int については、奇妙なことに、float についてはよりアドホックなものを選択しました) が、当時はそれらを反復できるようにする必要性を認識していませんでした。また、C は多くの点で非常に緩かったためint
、 の場合はそれ自体をドロップすることもできましたlong int
。
64 ビット マシンの出現により、少数のサイズのみが必要であり、したがってこのスキームでは 1 つのプレフィックスが必要であるという前提が崩れ、コンパイラは をサポートし始めましlong long
た。このスキームが再発見された理由の 1 つは、おそらく、新しい名前やキーワードを上書きする必要がなかったことです。その後、C99 はこの型を標準の正式な部分とし、C++ は後にそれを継承しました。
実は、「64 ビットへの長い道のり」で書いたように、
「1984 年頃、Amdahl UTS と Convex は 64 ビット整数に long long を追加しました。前者は 32 ビット アーキテクチャで、後者は 64 ビット アーキテクチャでした。UTS はこれを特に長いファイル ポインタに使用しました。 long long in PDP-11 Unix (1977). Algol 68 は 1968 年に long long に影響を与え、ある時点で GNU C にも追加されました. 多くの人がこの構文を非難しましたが、少なくとも予約済みのキーワードを消費しなくなりました."
GCC が long long をいつ追加したかはわかりませんが、1987 年に GCC 1.0 がリリースされて以来、これらの他のものは以前のものでした。
実際には、これは「The Long Road」で説明されている 1992 年の作業グループによって事実上決定されました。
C ++およびC標準が採用された理由long long
は、GCCが何年もの間それを使用しており、それが本質的に醜いにもかかわらず、既存の慣行が勝ったためです。GCCがその名前を選んだ理由については、彼らに尋ねる必要があります。<g>
。
long long
long
は、通常 4 バイト (32 ビット) しかない とは異なります。
long
多くのプリミティブ型でそれらを変更するために使用できる修飾子です。