代入できるリテラル
コンパイルが通る宣言はどれか。2つ選びなさい。
- A
char c = 65; - B
float f = 3.14; - C
long l = 3_000_000_000L; - D
byte b = 128; - E
int i = 10L;
正解と解説を見る
正解: A・C
- A: char の範囲 (0〜65535) にある int 定数は char に代入できます。65 は 'A' です。
- B:
3.14は double のリテラルなので float に代入できません。3.14Fと書きます。 - C: int の範囲を超える値でも、末尾に L を付ければ long のリテラルになります。
_も数字の間なので OK です。 - D: 128 は byte の範囲 (-128〜127) を超えています。
- E:
10Lは long なので、キャストなしで int には代入できません。
ポイント
- 範囲内の int 定数は char・byte・short に代入できます (
char c = 65は 'A')。128 は byte の範囲 (-128〜127) の外です。 - 小数のリテラルは double なので、float には
3.14Fと書きます。long の値は int に代入できません。