1樓:仙戈雅
樓上的兄弟都已分析過了,如果你學過資料結構中的棧就會學逆波蘭演算法。這道題就是典型的逆波蘭問題。
這先是執行i+i+i=3+3+3=9
最後執行了3次i++.
第一次i++=4
第二次i++=5
第三次i++=6
2樓:匿名使用者
這是i++和++i的區別。舉個例子吧 x=1;y=0; y=x++那麼y=1; 同樣 x=1;y=0; y=++x;則y=2;所以++i是先++後賦值。i++是先賦值,後++
3樓:
i++的值是i ;++i返回的值是i+1;所以最後結果是3*i=9
4樓:ai看雪
3+3+3就是9嘛;
在c語言中,i++是先引用再自增,如果你輸出i的值的話,應該會是6
5樓:曠若英
這題硬要說就是後置++是先用再加,也就是先取出i的值計算,在表示式結束後再+1。建議樓主不要看類似一個表示式中有多個++,尤其是同一變數++的東西,因為這種行為在c標準中尚未定義,也就是i的運算結果和編譯器有關,i最後是4還是6誰也說不準。在實際程式設計中一定不要有這種表示式出現。
6樓:匿名使用者
i++取i之前的值,在++,所以是3+3+3=9
7樓:匿名使用者
這道題我也思考過 似乎很有問題
貌似與系統棧有關 三次都用了i的數值
8樓:匿名使用者
i=? 各位大神給看看 剛學 老師給的作業
9樓:匿名使用者
i=3; k=(i++)+(i++)+(i++);
相當於i=3; k=i+i+i; i++; i++; i++;
10樓:
分解開來就是:
i=3;
k=i+i+i;
i++;
i++;
i++;
你看k是幾?
c語言中,int i=3,k=(i++)+(i++)+(i++);為什麼執行結果是後k=9,i=6?求解。
11樓:匿名使用者
這裡涉及到運來算順序的
源問題。i++指先使用i的值,再將i加一。所以,k先等於三個i相加,結果是k=9。
i的值使用完畢後,再從第一個i++開始,對i加一,此時i=4;對第二個i++使i加一,此時i=5;最後對第三個i++使i加一,此時i=6。
12樓:丁家宜大寶
這個是因為(i++)不bai
就是以dui的值來算嗎?加法是從左zhi
至右dao每兩個和在一起計算,i++是算版完後再加權的吧樓主還要注意這個問題
i=5; (++i)+(++i)+(++i)=22; 因為是從左至右計算,++i是要先算的,因此前兩個(++i)統一算為7+7=14;再算最後一個14+8=22;
c語言程式設計 k=(i++)+(++i)+(++i)
13樓:匿名使用者
abc的值
bai和i的值當然不一樣,i++和++i都是du從左到右的順序計算zhi
的,daoi++先取值後相加,++i先相加後取內值,如a=++i就是先容相加後把值給a,a=i++就是先把值給a,然後再相加。所以兩次的值不一樣。
你計算的錯了,那個式子是(i++)+(++i)+(++i),帶括號的時候括號裡的是要被優先計算的,i的初始值是2,所以應該是3+4+5=12。第2段**a=i++的時候,先給值傳給a再相加,所以a=2,後面的b=++i和c=++i是先相加後給值,所以b=4,c=5,2+4+5=11。如果對++i和i++還不太清楚,給我發email吧,lefthands@vip.
qq.com
14樓:匿名使用者
i++是先賦值再加1,++i是先加1再賦值第一個k=3+4+4=10,i=4
第二個k=2+4+4=10,i=4
我是這麼認為,不知道對不對
好久前學的
15樓:匿名使用者
我知道,但這裡不是說一兩下就說清楚了,加我,我跟你細說
c語言的問題:int i=3; k=(i++)+(++i)+(i++);
16樓:
字首優先順序大於字尾
++,--運算子優先順序大於()
所以先是運算中間那個()裡面的++i,
i就變成4,然後兩個字尾同時執行i++。
字尾(i++)的值是還沒加1之前的值。
字首(++i)的值是加了1之後的值。
所以式子就是4+4+4=12
17樓:
k=(i++)+(++i)+(i++)---i=3k=(i++)+(++i)+3-------i=4k=(i++)+5+3-----------i=5k=5+5+3---------------i=6++i 自增後用於運算
i++ 運算後自增
我忘了是左序運算還是右序運算了,不過不管左還是右,對這題來說,結果是一樣的..^_^
18樓:
看看彙編吧,如果你懂彙編。
--------------
10: int i=3;
00401028 mov dword ptr [ebp-4],3
11: int k;
12: k=(i++)+ (++i)+(i++) ;
0040102f mov eax,dword ptr [ebp-4]
00401032 add eax,1
00401035 mov dword ptr [ebp-4],eax //i=4
00401038 mov ecx,dword ptr [ebp-4] //ecx=4
0040103b add ecx,dword ptr [ebp-4] //ecx=ecx+4=8
0040103e add ecx,dword ptr [ebp-4] //ecx=ecx+4=12
00401041 mov dword ptr [ebp-8],ecx //k=12
00401044 mov edx,dword ptr [ebp-4]
00401047 add edx,1 //第一個i++
0040104a mov dword ptr [ebp-4],edx
0040104d mov eax,dword ptr [ebp-4]
00401050 add eax,1 //第二個i++
00401053 mov dword ptr [ebp-4],eax
13: cout< 00401056 mov ecx,dword ptr [ebp-8] 00401032 add eax,1 i=4。 然後執行三個加。 ----------------------------------------- 注:如果你使用vc編寫的話。 可以在表示式前設定斷點, 然後執行到斷點,點右鍵, 選“go to dissamble”,然後上面 每一個彙編指令都可一步一步走, 19樓: (++i) 後 i = 4 然後就做三個i相加,4 + 4 + 4 = 12。 lz感興趣的話可以研究: k = (++i) + (++i) + (++i); 看看在linux下的gcc和vc的結果是不是相同。 20樓:誓死護飛兒 10: int i=3; 00401028 mov dword ptr [ebp-4],3 11: int k; 12: k=(i++)+ (++i)+(i++) ; 0040102f mov eax,dword ptr [ebp-4] 00401032 add eax,1 00401035 mov dword ptr [ebp-4],eax //i=4 00401038 mov ecx,dword ptr [ebp-4] //ecx=4 0040103b add ecx,dword ptr [ebp-4] //ecx=ecx+4=8 0040103e add ecx,dword ptr [ebp-4] //ecx=ecx+4=12 00401041 mov dword ptr [ebp-8],ecx //k=12 00401044 mov edx,dword ptr [ebp-4] 00401047 add edx,1 //第一個i++ 0040104a mov dword ptr [ebp-4],edx 0040104d mov eax,dword ptr [ebp-4] 00401050 add eax,1 //第二個i++ 00401053 mov dword ptr [ebp-4],eax 13: cout< 00401056 mov ecx,dword ptr [ebp-8] 00401032 add eax,1 i=4。 然後執行三個加。 ----------------------------------------- 注:如果你使用vc編寫的話。 可以在表示式前設定斷點, 然後執行到斷點,點右鍵, 選“go to dissamble”,然後上面 每一個彙編指令都可一步一步走, 21樓:匿名使用者 哦,怎麼我得出的結果是11啊! c語言中設i=3,j=4,k=i+++j, k,i,j分別等於多少? 22樓:金色潛鳥 int i=3,j=4; int k; k=i+++j; 按運bai算符優先順序,可du寫成zhi k=(i++) + j; i++ 是字尾加加,表dao達式裡用原值,出了表示式自增回1; 所以上面 答運算可寫成2個式子: k=(i) + j; i=i+1; 所以得: k=7 i=4 j=4 23樓:殘若惜雨 i++和++i的優先順序是相同的,因此按照從左到右的自然順序執行。i++,i為4,j為4,k為7 c語言中((j++||k++)&&i++)是什麼意思 24樓: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.。 25樓:華夏沉默 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) 這個 需要重寫。比如函式putin2中,宣告的a是char型字元,後面scanf中卻要讓它接收乙個姓名字串,這樣的錯誤說明 構思很混亂,不是略改一下就能解決的 putin2函式中 char a 應該為乙個字串改為char a 100 字串a應該與運動員名字比較,也就是a與結構體的name2欄位比較。... include void main include void main 注意,你有變數未定義。並且有不少語法錯誤。比如printf 園的面積 2f n m 還有。儘量減少程式編幅。祝你學習愉快 付費內容限時免費檢視 回答請稍等哦 提問回答 c語言無法執行可能是因為執行期錯誤。這是指可執行程式執行過程... xone i xtwo i 4 i 4 一維陣列 copy下標轉變為二維陣列下標 xtwo i 4 3 i 4 xone i 4 4 3 i 4 二維陣列下標轉變為一維陣列下標 不知你說的啥意思,但那二者肯定不恆相等,除非x中全是同乙個數。c語言問題 int i,x 3 4 i x 1 1 是什麼意...C語言程式出錯,C語言程式沒有錯,但為什麼總顯示乙個錯誤
C語言程序為什么不能執行,C語言程式為什麼不能執行
c語言中為什麼相等xi443i