2

次の行でエラーが発生します「型の不一致: int から short に変換できません」

short a;
a=09;

しかし、オンではありません

a=9;

どうしてですか。

4

2 に答える 2

2

あなたの質問に具体的に答えるために、それはコンパイラの特異性です。別のコンパイラ (おそらく別のバージョン) を使用すると、キャストでつまずく代わりにinteger number too large: 09などのやや混乱しにくいエラーが発生します。これは、数値が無効であるため、この場合は不可能です。

コードの問題は、先頭の 0 で数値を開始しているため、8 進数表記で整数 (またはあなたの場合は short) を定義しようとしていることです。したがって、09 と書かれた 8 進数は存在しません。

したがって、両方を組み合わせると、コンパイラが少し混乱します。

于 2013-07-16T11:54:41.183 に答える