也談(++i)+(++i)+(++i)

來源:互聯網
上載者:User

今天有人在論壇中發了這樣一個蛋疼的問題:

int i =1,d;    d=(++i)+(++i)+(++i);    printf("%d\n",d);


上面的輸出結果是多少?



如果你沒見過。你可以先想想結果是多少?再去編程驗證一遍。如果你想不通,再來看原因。


















其實這是和編譯器的處理相關的,我這邊輸出結果居然是10.我原來想的是9.

原因分析:

+運算子是從左向右結合。所以(++i)+(++i)+(++i)先計算前面兩個++i,(此時i的大小已變為3)再計算第一個+運算,所以前面(++i)+(++i)結果是6(別忘了++i的結果是左值i,而不是右值3)。再計算最後一個++i,由於i在前面已經為3,所以這運算後i的值為4,所以最後結果是6+4=10。

這道題考的是對運算子優先順序順序和傳回值的理解。

但是如果在實際編程中寫這樣的代碼會被別人罵死。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.