以前我一直认为i++是返回对i的值加1,而++i是先返回i的值再对i加1,结果在java中测试
int i=6;
System.out.println("i is "+(i++));
System.out.println("i is "+i);
结果是:
i is 6
i is 7
以前我一直以为这样才能出现上面的运行结果
System.out.println("i is "+(++i));
System.out.println("i is "+i);
还有发现打印输出时候Java的编译方式和C的编译方式不一样,java是从左边到右边,而C是从右边到左边如Java运行代码以下代码:
i=6;
System.out.println("result is "+(++i)+" "+(++i)+" "+i);
运行结果是:
result is 7 8 8
个人觉得先做++i,++i,iC语言中运行以下命令
i=6;
println("result is %d %d %d",(++i),(++i),i);
运行结果是:
result is 8 7 6
编译顺序是i,++i,++i,只是显示的时候还是从左到右边显示,写了这么多年的程序从来没有注意到这个问题,感觉惭愧和汗颜!
int i=6;
System.out.println("i is "+(i++));
System.out.println("i is "+i);
结果是:
i is 6
i is 7
以前我一直以为这样才能出现上面的运行结果
System.out.println("i is "+(++i));
System.out.println("i is "+i);
还有发现打印输出时候Java的编译方式和C的编译方式不一样,java是从左边到右边,而C是从右边到左边如Java运行代码以下代码:
i=6;
System.out.println("result is "+(++i)+" "+(++i)+" "+i);
运行结果是:
result is 7 8 8
个人觉得先做++i,++i,iC语言中运行以下命令
i=6;
println("result is %d %d %d",(++i),(++i),i);
运行结果是:
result is 8 7 6
编译顺序是i,++i,++i,只是显示的时候还是从左到右边显示,写了这么多年的程序从来没有注意到这个问题,感觉惭愧和汗颜!
System.out.println("i is "+i);
结果是:
i is 6
i is 7
-------------------
一直这样认为
C语言中运行以下命令
i=6;
println("result is %d %d %d",(++i),(++i),i);
运行结果是:
result is 8 7 6//之前以为是 7 8 8
//cout<< i++ <<" "<<i++<<" "<<i<<endl; //the result is 6 5 5
cout<< ++i<<" "<<++i<<" "<< i<<endl; //the result is 7 6 5c++也是从右到左编译的...
刚试了一下 一样的代码
有心人啊
我也错了一年了
C下printf("result is %d %d %d",(++i),(++i),i);
结果是8 7 6
JAVA下System.out.println("result is "+(++i)+" "+(++i)+" "+i);
是 7 8 8
i=6;
System.out.println("result is "+(++i)+" "+(++i)+" "+i);
运行结果是:
result is 7 8 8
个人觉得先做++i,++i,iC语言中运行以下命令
i=6;
println("result is %d %d %d",(++i),(++i),i);
运行结果是:
result is 8 7 6
编译顺序是i,++i,++i,只是显示的时候还是从左到右边显示,写了这么多年的程序从来没有注意到这个问题,感觉惭愧和汗颜!
----------------------------------------不会吧,这么初级的问题C 语言里面,函数参数入栈的顺序是从右到左入。所以:println("result is %d %d %d",(++i),(++i),i);是先计算 i, 然后第一个 ++i, 最后第二个 ++i结果,i = 8,i = 7,i =6而输出时按从左到右来输出,于是就变成 8 7 6 了