C語言,i 2 jiii 最後i和j的值是多少,詳細過程

2021-08-11 04:11:08 字數 1662 閱讀 5268

1樓:匿名使用者

j = (++i)+(++i)+(++i)的執行順序是:

1、從左向右數,第乙個(++i),執行完畢後,記憶體中i為32、第二個(++i),執行完畢後,記憶體中i為43、第三個(++i),執行完畢後,記憶體中i為54、5+5+5賦給j,記憶體中j為15

所以最後結果i為5,j為15

2樓:驀然回首時

i的初始值是2

j = (++i)+(++i)+(++i);是將(++i)+(++i)+(++i)的結果賦值給j

對於不同的編譯器, (++i)+(++i)+(++i)執行的順序可能不同

但對於本題不影響,我們就按從左往右的順序繼續吧剛編譯了下,發現是這麼算的

第一步計算:(++i)+(++i)

優先括號,i=4, (++i)+(++i) == 4 + 4 == 8

第二步計算:8 + (++i)

j = 8 + 5 = 13

3樓:季子_林

每個編譯器都不一樣的,寫**最好不要這麼寫,很容易出錯。按照自己的邏輯寫就好。

編譯好後,切換到編譯完的彙編,就可以知道他是怎麼運算的了。

把i移到cpu暫存器,inc兩次。就是4,自加1次,就是8,再將i inc一次,就是8+5 =13.

i=5, j=13

4樓:匿名使用者

i=5;j=12;

第一次i++後i=3,第二次i++ 後i=4,第三次i++後i=5,所以j=3+4+5=12

5樓:郝在益

j=12,

i=5,

i依次變為3.4.5

c語言中((j++||k++)&&i++)是什麼意思

6樓:12345額時代

是一條賦值語句,zhidao=左邊是變數k,右邊是表示式,操作方法如下:

1、早c語言中,i++的意思是先進行表示式運算,再進行自增運算。

2、從結果來看,把i++的運算過程拆分開,等效於i=i+1,可以看到運算結果是一致的。

3、但是在表示式運算過程中,i++會先進行表示式運算,然後才會進行自增運算。

4、根據執行結果可以看到b=j;賦值運算結束之後j=j+1,即j進行自增運算。

5、而++i的意思是先進行自增或者自減運算,再進行表示式運算。

6、通過運算結果可以發現,如果僅從i的值來看,++i和i++最終的i值是一樣的,都是i自增加了1.。

7樓:華夏沉默

j與k進行或運算,(若j不為0,則或運算的結果為1,或運算以後j自加1,k不變,因為j不為0就可判斷或運算結果為1,不需要對k判斷;若j為0,則或運算後,j和k的值都自加1。)

j和k或運算的結果(0或者1)在與i進行與運算(若或運算的結果為0,則與運算的結果為0,i的值不進行自加1操作,因為0和任何數與都是0,不需要再對i判斷了;若前面或運算的值為1,則再與i與運算後,i的值自加1)

8樓:匿名使用者

這個是用於判斷的表示式,就是要判斷j++、k++、i++三個表示式的真假值。。。。。

9樓:匿名使用者

兩個邏輯運算,||是或邏輯,&&是與邏輯;i為0,結果為0(假);否則,只要j或k為非0,結果為真;

C語言 i的問題

我在vs2008中得到的結果是18。很明顯編譯器先求出了所有的子表示式,即3個 i 的結果再計算整個表示式的值。不知你用的是哪個版本?但是這種寫法可能是歧義的,至少是很危險的。你可以想象,編譯器很有可能求出第乙個子表示式的值,並將結果儲存起來,然後該結果不會被其他子表示式的計算所更新,那樣結果就是另...

C語言中,迴圈語句中的i」和「i表達的意思一樣嗎

c語言中,迴圈語句中的 i 和i 表達的意思都是變數自增1 單獨是乙個語句時無區別,作為賦值表示式的右值時有差異 例子 include stdio.h void main 您好,再迴圈體內他們連個是等價的,僅僅表示自增,但是通常使用i for i 1 i 10 i 先給 i 賦初值1,判斷 i 是否...

C語言為什麼char型數字求餘得到的是int型數字

其實所有運算都是針對記憶體進行運算,char型是以ascii碼對應儲存在記憶體中的,比如字元a的ascii碼是97,那它和int 97沒差別,但有些字元是不可見的比如換行符 回車符 製表符等等。這個具體可以參考ascii碼表。比如說,你用波浪號 ascii碼值126 對68取餘數,你會得到冒號 as...