自增運算符 和 a+++++b 、 a++ + ++的理解


a++: 先將a的值代入表達式,在表達式運算完畢后,再將a進行++處理
++a: 先將a進行++處理,將a的值代入表達式
(注意咬字)
a+++++b在編譯時會報錯,(a++)+(++b)和a++ + ++b不會報錯

“a+++++b”這一段根本就無法解析,編譯系統從左至右掃描整條語句,先遇到a++,判斷出來是一個a的后綴自加運算,然后接着掃描,遇到一個+,+是一個二目運算符,它的左邊已經有一個運算數a++了,系統就向右搜索第二個運算數,又遇到一個+,++比+的運算級別要高,這時,編譯系統就將兩個+看成一個整體來處理,既然是++,編譯系統就認定,肯定它的左邊或右邊有一個變量,編譯系統先搜索左邊,發現++,不是變量,再搜索右邊,發現+b,+b是什么東西?編譯系統是無法搞明白的,因此它就認為++是一個缺少左值的自增運算符,於是提示提示用戶:’++’ needs l-value


另外,假如定義int a = 1,b = 2;

 c = a++ + ++b;

1:先執行b自加,b變為3;相當於:b = b+ 1;
2:求a與b之和,賦給c;相當於:c = a + b ;//c = 1+3;
3:執行第二步之后,a自加1:a++;
4:如果要輸出的話,(按執行順序)
                  b = 3;
                  c = 4;
                  a = 2;
c= a+++b;
1:先執行a+b,相當於:c= a+b = 1+2;
2:a自增,相當於:a=a+1=2;
//相當於c=a+b; a++;
//假如是 c= (a++)+b;  也是向上面的順序一樣執行。因為a++ 的意思是先將a進行++處理,再將a的值代入表達式 
//假如是 c= ++a+b;  就不一樣了。先執行++a,再執行 c=a+b;
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM