JAVA与C++的一点比较

 int a =10; a+=a-=a*=a;
   
上面的两句,在JAVA与C++中有不一样的表现。它们的结果一个是-80,一个是0。是JAVA中是0,还是C++中是0,你知道吗?

在实验知道结果后,很容易解释。差别在于:右边的=运算完以后,前面的=左边的变量值是否发送了变化 。
但是深层的原因是怎么回事?我反正是不太了解,我是和一要好的同学闲聊时发现这样的问题的,希望有人能比较彻底的讲解一下。



注: 修改成a+=(a-=(a*=a));结果也没有变化,可见不关运算顺序,及运算符结合的问题
         C++我用的是TruboC++,防止可能不同的编绎器实现不一样照成的争吵。
        当然开发中,要是有人写出这样的代码肯定要被人骂.但是从语言的比较来说,或者是出于对语言的细节的学习.上面的代码还是很有意思的.

在java中赋值时会创建一个临时变量。
java在计算之前,值应该是都付好了
10+=(10-=(10*=10))
so, in java, it's -80. in c , it's 0.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值