字符之间的 Java 有损 XOR

Meg*_*roX 4 java types char xor

我不确定在 Java 中的字符之间应该如何“正确”完成异或运算。我见过其他人这样做,但是当我有一些简单的事情时:

char a = 'a';
char b = 'b';
char c = (char) a ^ b;
Run Code Online (Sandbox Code Playgroud)

我收到“从 int 到 char 的可能有损转换”编译错误。我不确定如何将整数带入这种情况。

GBl*_*ett 5

当您^在 a 上使用时char,操作是在char的 int 值中完成的。

由于运算符的优先级,强制转换在^.

这意味着它编译为

((char) a) ^ b
Run Code Online (Sandbox Code Playgroud)

由于首先进行转换,所以int最后才发生对 an 的提升,并且您将尝试将 an 分配int给 achar

你想使用括号:

char c = (char) (a ^ b);
Run Code Online (Sandbox Code Playgroud)