Я не уверен, как вводятся целые числа в этом контексте.
В вашем примере XOR двух символов может потенциально перекрывать диапазон значений.тип char, поэтому компилятор выдает int для этого оператора.
Хотя здесь это не так, поскольку 97^98
равно 3
, но, как и переменные a
и b
, не являются final
, они могутбудет изменено позже, и поэтому компилятор не согласится присваивать результат char
.
Используйте постоянные значения или встроенные в них значения, и вам не понадобится приведение:
final char a = 'a';
final char b = 'b';
char c = a ^ b;
В противном случае сужениерезультат операции XOR для символа, только если вы уверены, что это не создаст никакого побочного эффекта:
char c = (char) (a ^ b);