c++ - "long long" = "long long int" = "long int long" = "int long long"ですか?


私はlong int long両方が変数型のためにコンパイルできることを発見しました。 long int longint long longlong longlong 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;


Answers



C ++標準(7.1.6.2単純型指定子)によれば、

3複数のシンプル型指定子が許可されている場合は、任意の順序で他のdecl指定子と自由に混在させることができます。

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

long static long const int x = 10;

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

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;

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




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

はい。

C ++ 11§7.1.6.2/ 3

msgstr "" "複数のシンプルな型指定子が許されている場合、他のdecl指定子と自由に混在させることができます。




はい、 しないでください。 英語とドイツ語の形容詞と副詞(例えば時間と場所)のための従来の語順があるように、CとC ++も同様です。 従来の順序を変えてもコンパイラは混乱することはありませんが、それはあなたの仲間の開発者を混乱させるでしょう。 私は、従来の注文はおおよそ

  1. static / extern (リンケージ)
  2. const / volatile (変更)
  3. signed / unsignedunsigned
  4. short / long (長さ)
  5. 基本タイプ(頭部名詞)

確かにいくつかの揺れの部屋がありますが。




"long long" = "long long int" = "long int long" = "int long long"ですか?

他のすべての答えはあなたの質問の第二の部分について語った。 最初の部分について: 「long long」=「long long int」ですか? 答えははいです。

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  
...                     ...  

あなたの質問の第二の部分について: "長いint長い" = "int長い"ですか? 答えはもう一度はいです。

型指定子は、任意の順序で出現し、他の宣言指定子と混在することができます。 したがって、以下のすべて

long long  
long long int  
long int long  
int long long  

有効で同等です。