1. 程式人生 > >自增自減運算子練習題

自增自減運算子練習題

第一題
int x = 1,y = 1;

if(x++==2 & ++y==2) {
x =7;
}
System.out.println("x="+x+",y="+y);
輸出結果:x=2,y=2

第二題
int x = 1,y = 1;

if(x++==2 && ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);
輸出結果:x=2,y=1

第三題
int x = 1,y = 1;

if(x++==1 | ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);
輸出結果:x=7,y=2

第四題
int x = 1,y = 1;

if(x++==1 || ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);
輸出結果:x=7,y=1

練習題5

對於以下,有int x = 5, y = 6, z;

    題目1:z = ++x + y++;

    題目2:z = ++x + x++;

    題目3:x = ++x + x++;

  題目4:z = x > y ? ++x : y++; 

答案:

題目1:x = 6; z = 12; y = 7

題目2:x=7, y = 6, z=12

題目3:x=12

題目4:x = 5, y = 7, z = 6

練習6

int i = 0;   

int j = i++;   

int k = --i;

這段程式碼執行後,i等於多少?j等於多少?k等於多少?

i:0
j:0
k:0

1. int i = 0;   

2. int j = i++ + ++i;   

3. int k = --i + i--;

程式碼執行後i、j、k分別等於多少呢?

在第二個例子中,對於int j=i++ + ++i;,首先執行i++,i的值0被用於加運算(+),之後i自增值變為1,然後執行++i,i先自增變為2,之後被用於加運算,最後將i兩次的值相加的結果0+2=2賦給j,因此這行程式碼執行完畢後i=2、j=2;對於int k=--i + i--;用一樣的思路分析,具體過程在此不再贅述,結果應該是i=-2、k=-2。

練習7

int a=5;
int b=++a;   // ++在前 先運算再賦值 現在 a=b=6;
int c=--b+a;  //--優先順序比+高,先計算-- c此時b=5再加上a 5+6=11;再賦值

int c=a+(++b); //同理 括號優先順序最高 先計算++b 此時b=7 6+7=13;再賦值