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

2021-06-12 02:20:00 字數 772 閱讀 2001

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語言入門,求下圖程式輸出結果,為什麼,謝謝

其實樓上都沒有說到重點上面我來告訴你關鍵點 3個知識點你記住了 運算子優先順序別,迴圈語句 for 的控制範圍 指標於陣列的關係 你要清楚一點,你的for沒有大括號 這也就意味著每一次的迴圈只作用於它下面的那條最近的語句 什麼是語句?就是以分號結束的 至少你寫的這個就只作用於a i p 這一個語句 ...

c語言 下列程式執行後的輸出結果是1為什麼

36 輸出 1 x 0xffff 如果用十六進位制表示的話,數前面要加0x以表示是十六進位制。ffff用二進位制表示就是16個1,1111111111111111,轉換成十進位制就是2 16 1,即65535。因為int型資料範圍是 32767 32768,二進位制在計算機中表示時,第一位是符號位 ...

C語言初級有以下程式段輸出結果是

for i 1 i 15 j 4 一定是給錯了,應該是for i 1 i 15 i 4 取4個值1,5,9,13 for j 3 j 19 j 4 m 會執行5次m 也就是m 5,j分別取3,7,11,15,19 兩個迴圈是巢狀關係,合計執行為4 5 20。外層迴圈應該是 for i 1 i 15 ...