a=b+(a=b)*0
上面这个式子在java中可以实现两数的交换(不考虑越界,且只考虑整型),但是在c语言中却不行,有高手 能讲一讲为什么吗?详细一点,谢谢。。

解决方案 »

  1.   

    上面式子打错了     
    a=b+(b=a)*0
      

  2.   

    没具体测试过这个问题,我猜应该是c与java对于表达式中各个变量的入栈顺序不一样,可能一个是从左至右,一个从右至左。我仅仅是猜的,没有实际测试,你可以实际测试一下。
      

  3.   

    如果在c中a=b+(b=a)*0这样写不行,那你改成a=(b=a)*0+b试试呢,把加好两边对调一下看看。
      

  4.   

    这种硬要用一个表达式来做,没啥意义,其实c一个表达式也是可以做到的啊。
    如下面这个表达式就可以
    (a=a+b)+(b=a-b)+(a=a-b);
      

  5.   

    a=b+(b=a)*0 
    我比较怀疑,不同的c编辑器下,是不是同一个结果。