Java和C++中i++的使用区别

本文探讨了Java和C++中自加(self-increment)运算符的执行行为差异,Java在表达式中会先执行自增,而C++则是在整个表达式完成后。通过实例对比,揭示了这两种语言下++运算符的计算顺序不同。
摘要由CSDN通过智能技术生成

        今天在上Java课讲自加自减的时候遇到一个问题,同样的代码用不同的语言实现效果却不一样,感到很奇怪,于是自己尝试了一下。

        众所周知,大伙在学C++的时候都会遇到i++和++i的折磨,其实也挺好区分,前者是先赋值后+1,后者是先+1后赋值。

        再来说一下在Java和C++中的区别吧,先看代码:

Java:

public class HelloWorld {
    public static void main(String[] args) {
        int x1=3,y1=5;
        int x2=3,y2=5;
        int r1,r2;
        r1=x1+++x1*y1;
        r2=++x2+x2*y2;
        System.out.println("x1="+x1+"y1="+y1+"r1="+r1);
        System.out.println("x2="+x2+"y1="+y2+"r1="+r2);
    }
}

C++:

#include<iostream>
using namespace std;
int main() {
	int x1 = 3, y1 = 5;
	int x2 = 3, y2 = 5;
	int r1, r2;
	r1 = x1++ + x1 * y1;
	r2 = ++x2 + x2 * y2;
	cout << "x1=" << x1 << "y1=" << y1 << "r1=" << r1 << endl;
	cout << "x2=" << x2 << "y2=" << y2 << "r2=" << r2 << endl;
}

 

        可以看到,代码是一模一样的,但是结果却不太一样。通过结果我们可以看出:在Java的r1=x1+++x1*y1中是计算完x1++之后立马就将x1=3变为x1=4再进行+x1*y1的操作,因此这时的结果为3+4*5=23;而在C++的r1=x1+++x1*y1中是计算完这一整行后才发生的改变,即包括了后面+x1*y1的过程,因此此时结果为3+3*5=18。对于++x2在Java和C++中是一致的,因此最后可以总结:在Java中是执行完x++后立刻发生改变,而C++中是整行执行完后才发生改变。但具体底层的原因我还没细查清楚,据说是由于编译器的不同所带来++的计算方式不同,在这里就做一个比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的六两

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值