#include
int main()
{ int count=0;
printf("%d%d%d\n",count++,count++,count++);
}
為什麼結果是210?這個++到底是什麼時候執行?
另外我將上面輸出語句改成count=count++;然後再輸出count,結果是0。。。
感覺好混亂,求真正明白的大神講解
首先,這個問題並沒有一個標准的答案,依賴於編譯器,不同的編譯器結果很可能不同
但一般來說有一點是一樣的,那就是printf壓棧順序是從右往左,然後根據第一個參數的format裡的占位符依次彈棧,匹配占位符進行輸出
不用刻意去研究為什麼會得到這個結果,只要記住不要在一個表達式對同一個變量多次++,這是一個未定義的行為
如果樓主選定一個編譯器了,那麼可以繼續問,不然沒有太大研究的必要
同時,樓主你試試printf("%d%d%d\n",count++,count++,++count);打印結果是不是出乎你意料了
哈哈,這裡的前++和後++不僅涉及到了是先計算後加1還是先加1再參與計算,還涉及到了有的編譯器會將前++會將引用壓棧,而有的編譯器卻不會
PS:後++和前++的區別樓主應該是搞得清楚的吧。。。樓上的反正也解釋的很清楚
也可以參考:http://bbs.csdn.net/topics/370153775