為什麼這兩個C語言程式輸出結果不一樣呢,能仔細講解一下嗎

2021-06-12 02:18:57 字數 772 閱讀 8368

1樓:匿名使用者

第一個是嚴格按照輸出語句從頭到尾輸出的;第二個在呼叫printf函式時,其引數是從右至左進行處理的,即先處理-i++,一直到++i,再從左至右輸出。

2樓:啟航落地

你給的輸出結果是不是寫反了!主要是因為printf()函式是自右往左輸出引數的!

printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);

-i--是先使用i,再進行減操作,所以是-8;

-i++因為i的值一直是8,所以還是輸出-8;

以此類推,得出結果應該是8,7,8,8,-8,-8;

字尾表示式不會改變i的值,你可以進行測試

3樓:匿名使用者

不提到“未定義”和“***”這2個概念是不可能得到這個問題的正確答案的。

你的第二個程式的輸出結果是未定義的,

在不同的環境(包括硬體平臺、作業系統、編譯器)可能有不同的結果,所以不要相信那些確定的解釋,那是不符合c標準的

4樓:

先加減和先呼叫再加減請看譚浩強c語言書p57.

編譯環境不同可能結果也就不同。

printf這個函式的處理方式是逆序編譯順序列印。(不大確定了)

c語言程式設計問題。為什麼這兩個程式執行的結果不一樣?

5樓:萢萢

應該是a=s[i+1]/s[i]+a才等價吧

請教這段C語言程式輸出結果為什麼是1023沒有

靜態全域性變數初值是0。所以arr初值是0。最後輸出迴圈是10次,包含10個陣列元素1111000000對於迴圈巢狀邏輯,要是理不清,在原程式迴圈的地方加printf語句把對於的一些變數列印處理會更清晰。比如我下面把原碼新增了printf。include int change int n,int s...

C語言程式輸出結果,求大神詳細解釋

include void fun int p 注意所有符號要是在英文狀態下輸入main 輸出結果是21 1 首先要明白,因為這樣定義的fun函式執行完後並不能影響原來a的值,因而main程式中輸出的a值就是預先賦的1 要想函式執行完後改變a的值,則需要 與 來傳遞引數。參考下面的程式 include...

大一C語言作業 編寫程式輸入兩個整數,輸出它們的商和餘數

include int main 執行可用,輸入用空格分分開兩個數 比如輸入 5 3後回車 輸出 商是 1 餘數是 2 c 語言屬於易學難精的一門計算機語言。如果只是簡單學習c語言,那麼符合以下條件即可開始學習 識字,可以閱讀c語言教材 認識英文字母,標點符合,阿拉伯數字,並可以在電腦上打出來。1 ...