关于++、--的c++和java对比的两个问题
首先是下面一段代码,为什么c++的结果会和java的结果不同?
后面的注释就是结果,对于java我用freejava对于c++我用borland c++ builder6.0
public static void add3()
//这里的关键是我们在编写一些循环的时候。这样的语句将会使我们的程序出现死循环
{
int i=3;
i++;
System.out.println("i="+i);//4
i=3;
i=i++;
System.out.println("i="+i);//3
i=3;
i=++i;
System.out.println("i="+i);//4
/*borland c++ builder example
int i=3;
i++;
ShowMessage("i="+IntToStr(i));//4
i=3;
i=i++;
ShowMessage("i="+IntToStr(i));//4
i=3; i=++i;
ShowMessage("i="+IntToStr(i));//4
*/
}
然后还有另一个奇特的问题
public static void add()//简单的运算看不出什么不同
{
int i=3,j;
j=i++;
System.out.println("i="+i);//4
System.out.println("j="+j);//3
i=3;
j=++i;
System.out.println("i="+i);//4
System.out.println("j="+j);//4
/*c++ example
int i=3,j;
j=i++;
ShowMessage("i="+IntToStr(i));//4
ShowMessage("j="+IntToStr(j));//3
i=3;
j=++i;
ShowMessage("i="+IntToStr(i));//4
ShowMessage("j="+IntToStr(j));//4
*/
}
public static void add1()
{
System.out.println("(++i)+(++i)+(++i)");//4
int i=3,j;
j=++i;
System.out.println("i="+i);//4
System.out.println("j="+j);//4
i=3;
j=(++i)+(++i);
System.out.println("i="+i);//5
System.out.println("j="+j);//9 4+5
i=3;
j=(++i)+(++i)+(++i);
System.out.println("i="+i);//6
System.out.println("j="+j);//15 4+5+6
/* borland c++ builder example
int i=3,j;
j=(++i);
ShowMessage("i="+IntToStr(i)); //4
ShowMessage("j="+IntToStr(j)); //4 4
i=3;
j=(++i)+(++i);
ShowMessage("i="+IntToStr(i)); //5
ShowMessage("j="+IntToStr(j)); //10 5+5
i=3;
j=(++i)+(++i)+(++i);
ShowMessage("i="+IntToStr(i)); //6
ShowMessage("j="+IntToStr(j)); //18 6+6+6
*/
}
public static void add11()
//无论对于java还是c++,“()”有没有都是一样的
{
System.out.println("++i + ++i + ++i ");//4
int i=3,j;
j=++i;
System.out.println("i="+i);//4
System.out.println("j="+j);//4
i=3;
j= ++i + ++i ;
System.out.println("i="+i);//5
System.out.println("j="+j);//9 4+5
i=3;
j= ++i + ++i + ++i ;
System.out.println("i="+i);//6
System.out.println("j="+j);//15 4+5+6
}
public static void add2()
{
System.out.println("(i++)+(i++)+(i++)");//4
int i=3,j;
j=(i++);
System.out.println("i="+i);//4
System.out.println("j="+j);//3
i=3;
j=(i++)+(i++);
System.out.println("i="+i);//5
System.out.println("j="+j);//7 3+4
i=3;
j=(i++)+(i++)+(i++);
System.out.println("i="+i);//6
System.out.println("j="+j);//12 3+4+5
/*borland c++ builder example
int i=3,j;
j=(i++);
ShowMessage("i="+IntToStr(i)); //4
ShowMessage("j="+IntToStr(j)); //3 3
i=3;
j=(i++)+(i++);
ShowMessage("i="+IntToStr(i)); //5
ShowMessage("j="+IntToStr(j)); //6 3+3
i=3;
j=(i++)+(i++)+(i++);
ShowMessage("i="+IntToStr(i)); //6
ShowMessage("j="+IntToStr(j)); //9 3+3+3
*/
}
public static void add22()
{
System.out.println("i++ + i++ + i++");//4
int i=3,j;
j=i++;
System.out.println("i="+i);//4
System.out.println("j="+j);//3
i=3;
j= i++ + i++ ;
System.out.println("i="+i);//5
System.out.println("j="+j);//7 3+4
i=3;
j= i++ + i++ + i++;
System.out.println("i="+i);//6
System.out.println("j="+j);//12 3+4+5
}