在面試中,我們經常被問有關於自增自減的題目,這樣的題目簡單易懂,便於檢驗面試者的編程基本功,樓主在百度實習面試中就被問到。現在總結一下解題技巧:
對於以下,有int x = 5, y = 6, z;
題目1:z = ++x + y++;
題目2:z = ++x + x++;
題目3:x = ++x + x++;
對於上面的三道題目,我們下面一一解答。使用的技巧就是:把原始計算式轉化成多個、有先後計算順序的、小的計算式,然後帶入變量的值,進行求解。記住:同一優先級的運算符的計算順序是從右往左。
Q1:z = ++x + y++; 可以轉化爲:
x = x +1;
z = x + y;
y = y + 1;
帶入x = 5, y = 6,可得x = 6; z = 12; y = 7;
Q2:z = ++x + x++; 可以轉化爲:
x = x +1;
z = x + x;
x = x + 1;
帶入x = 5,可得x = 6; z = 6+6=12; x = 7; 故x=7,z=12;
Q3:x = ++x + x++; 可以轉化爲:
x = x +1;
x = x + x;
x = x + 1;
帶入x = 5,可得x = 5+1=6; x = 6+6=12; x = 12+1=13; 故x=13。
Q4:z = x > y ? ++x : y++;
條件運算符有短路的原則,由於x>y是假的,所以冒號前面的++x是不運行的,即使它是前++,我們直接運行y++,但是y是後++,所以z = 6, y = y+1=7.