0

長整数を宣言して開始しますか?

このフォーラムにとって基本的な質問ではないことを願っています。上記の両方のステートメントが同じことを達成するかどうかを知りたいです。つまり、長整数変数 num を宣言し、それを 24 に初期化します。ありがとうございます。

4

5 に答える 5

6

long int num = 24;int num = 24L同じですか?

彼らは違います。

1 つ目は型の変数を「作成」し、代入前に値 24 を型long intに暗黙的に変換します。2 番目は、型の変数を「作成」し、代入前に値 24 を型に暗黙的に変換します。intlong intintlong intint

于 2013-03-31T12:39:06.707 に答える
4

いいえ、long intlong int をint宣言し、int 変数を宣言します。変数の型は、それが「初期化」される (より正確には、割り当てられる) 値に依存することはありません。long intしたがって、環境内で型と型が同じである場合にのみ、2 つの宣言は同じですint

于 2013-03-31T12:36:27.597 に答える
2

ではない正確に。long intintは保証されていませんが、異なるサイズであると想定されています。

long int num = 24;

これは int と同様に安全で24あり、(暗黙的に) に昇格されlong intます。

int num = 24L;

これは一般的にそれほど安全ではありません。に「切り詰められた」 を24L定義し、 <の場合は問題が発生する可能性があります。long intintsizeof(int)sizeof(long int)

なぜ「IN GENERAL」と「COULD」なのですか?この場合、どちらも同じで安全だからです。しかし、次のようなことをするとします。

int num = xL;

xに収まるが収まらlong intない大きな数はどこintですか? 次に、オーバーフローがあります。

于 2013-03-31T12:39:58.560 に答える
1

いいえ。変数の型は、変数の型によって定義され、その左側の型によってのみ定義されます。

  • long int numnum変数を long int として宣言します。
  • int numnum変数を int として宣言します。

一方、等号の右辺も独立して定義されます。

  • 24int です。
  • 24Llong int です

右側 (この場合は24or ) は、左側 (この場合は変数)に収まるように24L強制 (つまり、変更) されますが、その逆はありませんnum

于 2013-03-31T12:38:48.327 に答える
1

変数の型と変数の初期化に使用される定数の型を区別する必要があります。

最初の宣言は、long int変数を宣言し、それを値に初期化します24L(これは、整数定数24をにキャストした後に得られるものですlong int)。2 番目の宣言は、int変数を宣言し、値に初期化します24(これは、long 整数定数24Lをにキャストした後に得られるものですint)。

于 2013-03-31T12:39:57.397 に答える