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...