转自http://blog.youkuaiyun.com/lubiaopan/article/details/4864760
一、先看下面的代码
int main(){
int i=3,j,k;
j=(i++)*(i++);
k=(++i)*(++i);
cout<<j<<k<<endl;
}
在学习C++的时候我专门记过此程序的运行过程,j的结果应该是3*3=9,k的结果应该是7*7=49,i最终的值应该是7。
二、再看下面的代码
public class TestPlusPlus{
public static void main(String args[]){
int i=3,j,k;
j=(i++)*(i++);
k=(++i)*(++i);
System.out.println(j);
System.out.println(k);
}
}
今天在用java编程的时候,为了图省事有一条语句我也写成了(i++)*(i++)的形式,但结果却和C++中不同。上面的程序是为了实现和C++的对比写的测试代码,此程序中j的结果是3*4=12,k的结果是6*7=42。
在用++和--运算符时提醒大家一定要遵循清晰明了的原则,不同语言中对++和--的处理不同,即使是相同语言不通编译器对++和--的处理也很可能不同,大家一定要慎用。
(java的++与一行代码的执行绪不同,C++里如果++在前,则在编译此行代码前先将值+1,java则不同,它以字符?为单位)