程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 環境-vc++6.0內關於s=(i++)*(i++)的問題

環境-vc++6.0內關於s=(i++)*(i++)的問題

編輯:編程綜合問答
vc++6.0內關於s=(i++)*(i++)的問題

int i = 0;

s = (i++)*(i++)
printf(“%d”,s);

這個結果應該是多少?我個人分析應該是2,第一個i++使用的是1 然後i的值應該變成2然後第二個i使用的是2 然後i變成3 結果s的值應該是2 但是在vc++6.0的環境下運行結果為什麼是1呢?新手求解。

最佳回答:


這個問題問了無數遍,我想這麼告訴你。
就C++語言來說,這個是語言未定義行為,所謂語言未定義行為,就是在語言規范中沒有規定遇到這樣的代碼應該輸出什麼。不同編譯器輸出結果可以不同。根據編譯器實現的機制以及優化的機制,不同的編譯器以它認為合理的方式產生代碼。
就VC++6.0來說,你可以通過反匯編的方式搞清楚它究竟被編譯成了什麼,但是注意,即便相同的編譯器,不同的優化選項和代碼上下文輸出也可能不同。

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