y=x++相當於,y=x;x=x+1;
y=(x++)*3相當於:y=x*3;x=x+1;
這裡加()與不加是一回事,
因為自加運算子優先於+ - /* % .所以不需要新增()
寫成y=x++ * 3是等效的.
這裡講的優先,並不是x先乘3之前自加,而說"++"屬於x
這在運算前自加,還是運算後自加,取決於"++"號在變數前後的位置.
所以,優先順序跟乘除優先於加減是完全不同.
我個人認為,在自加處理時,不要"優先說法"更好.你就認為"++"號屬於某個變數.
出現了=號的++一定是將兩個賦值表示式組合到一起的.先算那個取決於是前自加還是後加自.如果在前那就先自加,再放到所處位置參加運算.
(如y= ++x * 3 就相當於: x++; y=x*3;)
(再如x=5; y=++x+(x+5);就相當於x++; y=x+(x+5);//所以y=17)
如果在後就先參加運算再自加.
(y=x++ /4; 就相當於: y=x/4; x++;)
(再如x=5; y=x++ + (x+5); 就相當於 y=x+(x+5); x++; //所以y=15)
y=x++相當於,y=x;x=x+1;
y=(x++)*3相當於:y=x*3;x=x+1;
這裡加()與不加是一回事,
因為自加運算子優先於+ - /* % .所以不需要新增()
寫成y=x++ * 3是等效的.
這裡講的優先,並不是x先乘3之前自加,而說"++"屬於x
這在運算前自加,還是運算後自加,取決於"++"號在變數前後的位置.
所以,優先順序跟乘除優先於加減是完全不同.
我個人認為,在自加處理時,不要"優先說法"更好.你就認為"++"號屬於某個變數.
出現了=號的++一定是將兩個賦值表示式組合到一起的.先算那個取決於是前自加還是後加自.如果在前那就先自加,再放到所處位置參加運算.
(如y= ++x * 3 就相當於: x++; y=x*3;)
(再如x=5; y=++x+(x+5);就相當於x++; y=x+(x+5);//所以y=17)
如果在後就先參加運算再自加.
(y=x++ /4; 就相當於: y=x/4; x++;)
(再如x=5; y=x++ + (x+5); 就相當於 y=x+(x+5); x++; //所以y=15)