程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-count++的問題,++求解答

c語言-count++的問題,++求解答

編輯:編程解疑
count++的問題,++求解答

#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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved