A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java程序如下:
public class Add {
public static void main(String[] args){
        int i=2;
        System.out.println(i++);
        System.out.println(i);
        int a=i++ + ++i;
        System.out.println(a);
        System.out.println(i);
        for(int j=0;j<1000;j++)
        {
                i=i++;
        }
        System.out.println(i);
}
}
运行结果:
2
3
8
5
5
C++程序如下:
#include <iostream.h>
void main()
{
        int i=2;
        cout<<i++<<endl;
        cout<<i<<endl;
        int a=i++ + ++i;
        cout<<a<<endl;
        cout<<i<<endl;
        for(int j=0;j<1000;j++)
        {
                i=i++;
             }
     cout<<i<<endl;
}
运行结果:
2
3
8
5
1005
相同的程序在进行自增之后输出结果不同,有什么不同之处吗?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
表示不懂~~~~~~~飘过~~~~
回复 使用道具 举报
在c++与java中处理i=i++;不一样!
程序的执行顺序是这样的:因为++在后面,所以先使用i,“使用”的含义就是i++这个表达式的值是5,但是并没有做赋值操作,它在整个语句的最后才做赋值,也就是说在做了++操作后再赋值的,所以最终结果还是5;所以在循环的1000次里i值没有变化!
可以理解为int temp=i;i++;i=temp;所以没有变!
但在c\c++中就不同了,c语言都讲过,也是按正常人思维走的。我就不解释了。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
攻城狮 + 1 赞一个!
韩国军 + 1 谢谢你的指教!!

查看全部评分

回复 使用道具 举报
把java里的 i=i++; 改成 i++;;就和C++一样了是1005
对于i=i++而言只是把 i 的值赋值给了 i 而不是把 i++的值赋值给了 i;
就像打印System.out.println(i++);一样 结果还是 i 原先的值并不是 i++后的值;所以还是5 ,无论赋值多少次 都是把 5 赋给 5 ;
至于C++嘛我就不怎么了解了 嘿嘿 坐等高人哈

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
{:soso_e127:}java中,++a 和a++作为单体是没有区别的,但是当做赋值运算时,就有区别了。例如:int a = 2, int b = a++ ; int c =2  int d = ++c, 打印输出后,b的值是2,d的值是3。两者的区别就是int b = a++是先将a的值赋值给b,然后a再自增。而int d = ++c是将c自增后再赋值给d,这时候d就为3.
对于c++语言没学过,不懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马