web-dev-qa-db-ja.com

「long long」=「long long int」=「long int long」=「int long long」ですか?

long int longint long longの両方が変数型にコンパイルできることがわかりました。 long int longint long longlong long、およびlong long intに違いはありますか?

一般に、同じ数のlongを持っている場合、型は同一ですか?

1ロング:

long l;
int long il;
long int li;

2ロング:

long long ll;
int long long ill;
long int long lil;
long long int lli;

また、上記が正しい場合、次の宣言も同じですか?

long long* llp;
int long long* illp;
long int long* lilp;
long long int* llip;
151
ggrr

C++標準(7.1.6.2単純型指定子)による

3複数のsimple-type-specifierが許可されている場合、他のdecl-specifierと任意の順序で自由に混在させることができます。

たとえば、次の宣言は有効です

long static long const int x = 10;

constexpr修飾子とともにconst指定子を使用することもできます。例えば

constexpr long static long const int x = 10;

ところで、指定子signedを忘れてしまいました!たとえば、宣言子xの前に追加しましょう

constexpr long static long const int signed x = 10;

Cでは、同じ宣言指定子シーケンスで複数の型修飾子を使用することもできます。 C標準(6.7.3型修飾子)による

5同じ修飾子が同じspecifier-qualifier-listに直接または1つ以上のtypedefを介して複数回出現する場合、動作は1回のみ出現する場合と同じです。

したがって、たとえばCでは、次の宣言も有効です

const long const long static const int const signed x = 10;

したがって、プログラムに入力されたシンボルの数に応じて支払われる場合、そのような宣言を使用することをお勧めします。 :)

132

タイプは同じですか...

はい。

C++ 11§7.1.6.2/ 3

複数のsimple-type-specifierが許可されている場合、それらは他のdecl-specifiers任意の順序で。

110

はい、ただししないにしてください。英語とドイツ語が形容詞と副詞に対して従来のWordの順序を持​​っているように(例えば、時間-方法-場所)、CとC++も同様です。従来の順序から変更してもコンパイラーは混乱しませんが、仲間の開発者を混乱させます。私は、従来の順序がおおよその線に沿っていることを提案します

  1. static/extern(リンケージ)
  2. const/volatile(変更)
  3. signed/unsigned(符号付き)
  4. short/long(長さ)
  5. 基本型(頭名詞)

確かにいくつかの小刻みの部屋がありますが。

41
hobbs

「long long」=「long long int」=「long int long」=「int long long」ですか?

ここの他のすべての回答は、質問の2番目の部分について述べています。最初の部分について:「long long」=「long long int」?、答えはyesです。

C++ 11 7.1.6.2単純型指定子(表10)

Specifier(s)            Type
...                     ...
long long int           “long long int”
long long               “long long int”
long int                “long int”
long                    “long int”  
...                     ...  

質問の2番目の部分について:「long int long」は「int long long」ですか?、答えは再びyesです。

型指定子任意の順序で発生し、混在させることができます他の宣言指定子と。したがって、次のすべて

long long  
long long int  
long int long  
int long long  

有効かつ同等です。

28
haccks