次の行でエラーが発生します「型の不一致: int から short に変換できません」
short a;
a=09;
しかし、オンではありません
a=9;
どうしてですか。
あなたの質問に具体的に答えるために、それはコンパイラの特異性です。別のコンパイラ (おそらく別のバージョン) を使用すると、キャストでつまずく代わりにinteger number too large: 09などのやや混乱しにくいエラーが発生します。これは、数値が無効であるため、この場合は不可能です。
コードの問題は、先頭の 0 で数値を開始しているため、8 進数表記で整数 (またはあなたの場合は short) を定義しようとしていることです。したがって、09 と書かれた 8 進数は存在しません。
したがって、両方を組み合わせると、コンパイラが少し混乱します。