1. 程式人生 > 其它 >c語言中a++和++a有什麼區別_a+++a和a+a++結果為什麼不一樣

c語言中a++和++a有什麼區別_a+++a和a+a++結果為什麼不一樣

技術標籤:c語言中a++和++a有什麼區別

首先為大家舉兩個栗子引出今天的問題:

let a = 1
console.log(a+++a)
//輸出3

let a = 1
console.log(a+a++)
// 輸出2

那麼造成這兩個結果差異的原因是什麼呢?這就涉及到自增運算子 a++和++a的區別以及運算子的優先順序了。

首先為大家解釋a++和++a的區別:

let a = 1
console.log (b = ++a) // 輸出結果為2 a為2

let a = 1
console.log(b = a++) //輸出結果為1 a為2

因此我們可以得到如下結論:++a是在運算之前a+1已經完成,a++是需要在運算完成之後a+1才執行。

第二是關於運算子的優先順序,可以參考MDN關於優先順序的相關知識,常用的大致如下:

逗號(,) < 賦值(=) < 邏輯或(||) < 邏輯與(&&) < 相等判斷(===) < 大小判斷(>,<) < 加減 < 乘除 < typeof < 前置遞減遞增(++...) < 邏輯非(!...) < 後置遞減遞增 (...++) < new < 成員訪問(x[y]或x.y) < 小括號

那麼迴歸到最初我們講述的栗子中:

let a = 1
console.log(a+++a)
/* a+++a中一共有三個“+”,根據優先順序我們知道a++的優先順序更高,
因此先得到a++的結果為1;之後a的值增加1,即為2;
因此a+++a的結果為3 */


let a = 1
console.log(a+a++)
/*運算從左往右開始,首先是a的值為1,因為a++之前並沒有自增運算,因此在a++時,a的值仍然為1;
因此結果就是(1,1)相加,結果為2.*/

資料參考飢人谷前端體系課課程