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