var z = 0; z=z=z++; alert(z);
彈跳窗是0,為什麼?
跟
var z = 0; z++;z=z; alert(z);
的區別?
好奇你這是為了做題還是你在哪個開源專案的程式碼中看到過作者使用這樣的書寫方式, 如果是為了做題或筆試, 建議不要考慮這樣的學校或公司. 因為此題毫無意義, swift3甚至去掉了++運算子, 人生短暫, 把時間浪費在讓人confusing或容易出錯的語法特性上不值.
兩點:
a = a++ 先賦值,後自增
賦值表達式是有回傳值的,簡稱為表達式的值
z=z=z++;
相當於將“z=z++”表達式的值賦值給z,而“z=z++”的值等於“z++”,“z++”先使用z當前值,後自增
後置自增:n++這樣的表達式會傳回一個n原始值的副本,然後將n原始值++n = n++ 後置自增運算符的優先權高於賦值所以=右側會先將n自增並回傳n的原始值副本然後進行賦值運算將n的原始值賦值給n,所以n的值不變
z++是個表達式,表達式的結果還是z,所以z=z++相當於z=z 啥也沒做,你要了解下++z++ 啥也沒做,
z++
z
z=z++
z=z
z++ 的邏輯是先返回變數值,然後才自增。
的邏輯是先返回變數值,然後才自增。
等價於
a=z++; z=a; z=z;
++ 和= 運算順序的問題 建議看一下 運算 賦值的優先權
好奇你這是為了做題還是你在哪個開源專案的程式碼中看到過作者使用這樣的書寫方式, 如果是為了做題或筆試, 建議不要考慮這樣的學校或公司. 因為此題毫無意義, swift3甚至去掉了++運算子, 人生短暫, 把時間浪費在讓人confusing或容易出錯的語法特性上不值.
兩點:
a = a++ 先賦值,後自增
賦值表達式是有回傳值的,簡稱為表達式的值
相當於將“z=z++”表達式的值賦值給z,而“z=z++”的值等於“z++”,“z++”先使用z當前值,後自增
後置自增:
n++這樣的表達式會傳回一個n原始值的副本,然後將n原始值++
n = n++ 後置自增運算符的優先權高於賦值
所以=右側會先將n自增並回傳n的原始值副本
然後進行賦值運算將n的原始值賦值給n,所以n的值不變
你要了解下++z++
是個表達式,表達式的結果還是z
,所以z=z++
相當於z=z
啥也沒做,你要了解下++
z++
啥也沒做,z++
或你用🎜++z🎜,前自增是先自增,然後回傳自增後的結果🎜的邏輯是先返回變數值,然後才自增。
等價於
++ 和= 運算順序的問題 建議看一下 運算 賦值的優先權