本人不才,請指點關於C語言,i 和 i的問題

時間 2022-03-02 22:50:27

1樓:

不能發傳送門怎麼辦……我給你私信過去吧,你給我留個id……hi也可以每次看到這題我都斯密達……

--------

我解釋一下你帖子裡那個最佳吧 - -

因為 + 是雙目運算子,要把左右兩邊的值都算出來才能加。

先算兩遍 ++j ,此時j為7,然後兩個7相加。

然後14再和 ++j 相加,就是14+8,等於22--------

但是呢不同編譯器結果就不同,這種題實在沒意思 - -

2樓:匿名使用者

不同的計算機和解釋程式運算出來的結果不同,用turbo c運算出來是24,vc 6.0運算出來是22,

這個和解釋程式的計算過程中使用堆疊的方式而有所不同。

首先理解i++和++i的區別,i++是使用i運算結束後加一,++i是使用i運算前加一,不過向題目中寫的這麼累贅,會因為堆疊演算法不同,而結果不同。

第一個式子就不用囉嗦解釋了吧。

第二個式子:

對於turbo c來說,三個括號都同時以此運算,再運算三個括號外面的加法,

所以q=8+8+8=24

對已vc 6.0來說:總是先運算加法兩邊的式子,q=(++j)+(++j)+(++j);

第一步:先運算(++j)+(++j)=7+7=14第二步:再運算14+(++j)=14+8=22因而我們可以一次類推:

q=(++j)+(++j)=14

下面這個呢?

q=(++j)+(++j)+(++j)+(++j)第一步:先計算(++j)+(++j)=14第二步:14+(++j)=14+8=22

第三步:22+(++j)=22+9=31

3樓:匿名使用者

i++是先使用,後加,p=5+5+5,求出p後i=8。++j是先加,後使用,加後j變成了8,也就是說q=8+8+8,不能理解成q=6+7+8,j只能有一個值。執行結果應該是:

15,24,8,8

說明:我使用的是vc 6.0

4樓:

p=5+6+7=18

q=6+7+8=21

i=8j=8

5樓:匿名使用者

a=i++,就是說a=i,i=i+1,

a=++i,就是a=i+1;i=i+1

6樓:匿名使用者

p=(i++)+(i++)+(i++) p = i + i + i; p = 15; i = 5 + 1 + 1 + 1

c語言,i 和 i有什麼不同

萌士方小韓 先賦值在自增和先自增再賦值 並且前者會額外生成一個副本 以季宛映冬 i 表示遞增不在迴圈中則表示i的值 1 i 與 i的區別是 i 是先操作後賦值 也就是如果你在此輸出i 還是輸出的i的值,便是你在i 後面再寫一句輸出語句則i的值就變了 而 i則是先賦值後操作,同理在 i的時候輸出會得i...

在C 語言中,i 與 i有什麼區別?那i 和 i呢

這種演算法要用例子才能說明的了 比較全面的例子好像這樣 當i 5時,求s i i 和s i i 的值 當i 5時,s i i 13 先算第一個 i 在前面,就把i先加1再把賦值,即先把i變為6然後再得出 i 的值為6,這時i已經變為6了,再計算第二個 i 在前面,也是先把i加1後再賦值,不過這時的i...

C語言關於for i n 1 i0 i這個以及以

這段程式說明 陣列a有n個元素,陣列b也是 陣列a中存放了n個資料 程式前面需要將變數j賦初值0 程式作用是將a中的資料按照倒序存放到陣列b中,即b 0 a n 1 b 1 a n 2 b n 1 a 0 i從n 1迴圈遞減到0 將陣列a反序傳給陣列b 總的來說 就是把陣列a的順序反過來 總的意思是...