a = b-(a-(b = a)); //swapping a and b
另外,如果
a=20,b=10
为什么System.out.println(b = a);
给20结果?
最佳答案
a = b-(a-(b = a)); //swapping a and b
这是交换
numeric
类型而不需要支持变量的一种方式。他们通常在面试中问您这个问题。
由于它是一行编写的,因此特别不可读,但请分步考虑:
int a = 5;
int b = 2;
a = b - a; // <- -3
b = b - a; // <- 2 - ( - 3) <- 5
a = a + b; // <- (- 3) + 5 = 2
没有临时变量,仍然不能交换非
numeric
类型。用
System.out.println(b = a);
我猜您想检查
b
是否等于a
,在这种情况下,您应该写出System.out.println(b == a)
,其结果为布尔值。使用
b = a
,可以将a
的值分配给b
,然后打印其结果。