long int long
とint long long
の両方が変数型にコンパイルできることがわかりました。 long int long
、int long long
、long 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;
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;
したがって、プログラムに入力されたシンボルの数に応じて支払われる場合、そのような宣言を使用することをお勧めします。 :)
タイプは同じですか...
はい。
C++ 11§7.1.6.2/ 3
”複数のsimple-type-specifierが許可されている場合、それらは他のdecl-specifiers任意の順序で。
はい、ただししないにしてください。英語とドイツ語が形容詞と副詞に対して従来のWordの順序を持っているように(例えば、時間-方法-場所)、CとC++も同様です。従来の順序から変更してもコンパイラーは混乱しませんが、仲間の開発者を混乱させます。私は、従来の順序がおおよその線に沿っていることを提案します
static
/extern
(リンケージ)const
/volatile
(変更)signed
/unsigned
(符号付き)short
/long
(長さ)確かにいくつかの小刻みの部屋がありますが。
「long long」=「long long int」=「long int long」=「int long long」ですか?
ここの他のすべての回答は、質問の2番目の部分について述べています。最初の部分について:「long long」=「long long int」?、答えはyesです。
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
有効かつ同等です。