public class Main
{
public static void main(String[] args)
{
int a,b,c,d;
a=1;b=2;
a^=b^=a^=b;
System.out.println(a+" "+b);
c=1;d=2;
c^=d;
d^=c;
c^=d;
System.out.println(c+" "+d);
}
}
Я использую a^b^= a^= b для замены a и b. Однако выход из этой программыa^= b^= a^= b в Java кажется неправильным
0 1
2 1
Я новый один в Java, и я не знаю, почему это 0. Является ли это ошибка в моей среде выполнения Java? Или что-то особенное в Java я не знаю? Вот java -версия.
java version "1.7.0_65"
OpenJDK Runtime Environment (fedora-2.5.2.5.fc20-x86_64 u65-b17)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
К сожалению, это мой первый вопрос на переполнение стека ... если я забыл некоторые правила, скажите мне, пожалуйста, спасибо.
В третий раз, когда вы его написали, вы написали это по-другому. – keyser
Мой совет? Не пишите такой код. Это победитель кода обфускации. Ваша цель должна заключаться в том, чтобы писать как можно яснее. – duffymo
Я знаю, что это не очень хороший способ кодирования, но мне интересно, что случилось, когда я использовал a = b^= a^= b. Я не думаю, что хороший программист тоже это сделает. –