C語言中的printf函數的輸入輸出問題

來源:互聯網
上載者:User

標籤:

這個問題是個很基礎,但是我一直不知道的問題,是同學問了之後才知道的,長知識了。

這裡要注意的是,printf函數是從右向左計算,從左向右輸出。

距離如下:

#include <stdio.h>main(){    int i=8;    printf%d, %d, %d, %d\n",i,--i,i,i--); }

此程式輸出結果為:7, 7, 8, 8。原因是,printf()函數中,i++,i-- 時,i的值是在printf()函數之後才會被重新整理,所以在printf()函數中,i++,i-- 對i的值暫時不產生影響,而++i、--i會有影響。

實際這裡是涉及到printf的運行規則問題,是先入棧再出棧,然後再輸出。具體如下。

對於printf函數中的參數,按照入棧順序進入棧堆,然後先入棧者到棧底,後入棧者到棧頂,完成後,開始計算,由棧頂開始計算,先出棧者為printf函數中的右側參數,計算完後接著出棧,然後計算下面的元素,這樣,printf函數中的第一個元素就成為最後一個計算的元素,然後再按照由右向左的順序將計算結果輸出,所以上述例子的結果如是。

以此記錄,以供學習!

C語言中的printf函數的輸入輸出問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.