开发者社区 问答 正文

两个数交换不加入第三个数这样的做法具体栈中是怎么一个顺序?

两个数交换,但不加入第三个数,对于
int num1 =1;
int num2 =2;
System.out.println("交换前---num1="+num1+" num2="+num2);
num2 = num1 +(num1 = num2)*0;
System.out.println("交换后---num1="+num1+" num2="+num2);
是怎么交换的??
num2 = num1 +(num1 = num2)*0;
对于这句语句,执行之后个人觉得是num1和num2都是2,可是执行结果却不是,这点没搞懂!谢谢.

展开
收起
蛮大人123 2016-02-20 14:50:00 1978 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    你到网上找java运算符优先级,看一下执行先后就能明白。
    num2 = num1 +(num1 = num2)*0;
    1.执行()中,num1=num2, num1 = num2; (此时不影响+左边的num1值)
    2.执行(num1 = num2)*0 = 0
    3.执行num1 + 0
    4.执行num2= num1;
    完成交换。

    2019-07-17 18:45:20
    赞同 展开评论
问答标签:
问答地址: