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

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

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語言程式設計問題。為什麼這兩個程式執行的結果不一樣

應該是a s i 1 s i a才等價吧 c語言程式設計問題,我的兩個 一樣的 為什麼執行結果差這麼多 一樣了,第二個輸出 那邊不是多了個空格,每次都輸出 空格,即 右邊程式printf 多寫了個空格 很明顯第一個printf 少打了一個空格 關於國二c語言的問題 最後一個程式設計題必須要一模一樣才...

幫忙寫兩個C語言程式

呵呵,今天剛看到你增加的要求,下面是增加註釋後的程式,都是可單獨執行的 第1題 include define n 50 字串的最大長度,可以根據需要修改int ispalindrome char s return 1 void main 第2題 include define m 10 陣列的最大長度...

c語言中的一道題求程式的輸出結果為什麼我求出來是

你的情況是 來 while n 1 中是先取n值判斷源後再n 因此第一次n 0判斷有效,n變為1並執行迴圈體 第二次n 1判斷仍有效,n變為2並執行迴圈體,第三次n 2判斷無效,n 被忽略。但實踐中由於編譯器的實現不同,可能導致第三次半段無效時n 未被忽略 理論上是不應該忽略的。所以給的答案是1 2...