C語言 printf的執行順序

2021-07-09 13:49:48 字數 404 閱讀 4782

標籤:c語言 printf 執行順序

by 小威威

# include 

int main(void)

輸出結果是30而不是31.

首先,我們能夠肯定的是輸出的是第乙個引數,但是為什麼不是31呢?難道受到後面引數的影響?

其實問題出在我們對printf的執行順序不了解。printf是從右往左執行的,即是printf 先執行–b+a,再執行–a+b,然後再輸出第乙個引數。為什麼會這樣呢,那麼就得檢視一下pringf函式的源**。

我個人覺得,可以這樣理解:

我們將–a+b,–b+a兩個引數傳入printf函式,但是函式內部先執行第二個引數的計算,即是對–b+a的計算,然後再對第乙個引數計算,然後再輸出第乙個引數。所以就會出現上面的情況!!!

C語言 printf函式執行順序

printf函式是從左往右讀取,然後將先讀取放到棧底,最後讀取的放在棧頂,處理時候是從棧頂開始的,所有我們看見的結果是,從右邊開始處理的。我們先看下這段 c語言經典面試題 include intmain int p arr p 100 printf d d n p p return0 輸出結果 13...

printf函式引數的執行順序

今天在做提的時候,遇到了一件奇怪的事,本是一件簡單的題 原題大致意思就是二分查詢某個值,然後輸出比較次數 下面看看我的 include include int data 1000 int k int binarysearch int l,int r,int aim int main int aim ...

C語言 printf計算順序和壓棧順序初探

不同編譯器產生的結果不同,本文測試環境為vs2013和vc6.先看以下 int x 3 printf d d d d d d x,x x,x,x x vs2013輸出結果 434434 vc6輸出結果 444433 那麼問題來了 1 兩個編譯器printf的壓棧順序和計算順序是怎樣的?2 兩個編譯器...