Javaでは、 "文字C = ''" なぜ "C = C + 1" コンパイルできない場合は?

姉妹ワイスリプシッツ:

私は、次のコードをコンパイルしようとしました。

public static void main(String[] args){
    for (char c = 'a'; c <='z'; c = c + 1) {
        System.out.println(c);
    }
}

私がコンパイルしようとすると、それがスローされます:

エラー:(5、41)のjava:互換性のない型:int型からchar型への可能な非可逆変換

事は私が書く場合、それは仕事をしているc = (char)(c + 1)c += 1またはc++

私はチェックして、私がしようとすると、コンパイラは同様のエラーがスローされますchar c = Character.MAX_VALUE + 1;が、私は「C」の値が本来の機能で「文字」タイプの最大値を渡すことができない方法を参照してくださいません。

アンディ・ターナー:

c + 1あるintオペランドが受けるとして、二項数値昇格を

  • c あります char
  • 1 あります int

これcまで拡大する必要があるint追加のための互換性を持たせるようにし、式の結果は型ですint

物事その「仕事」については:

  • c = (char)(c + 1)明示的に表現を落としているcharので、その値は、変数の型と互換性があります。
  • c += 1 相当し c = (char) ((c) + (1))、それは基本的には前回と同じですので、。
  • c++ 型である charので、何のキャストは必要ありません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222257&siteId=1