作者tatsuo769 (fish)
看板TransCSI
標題Re: [問題] 補南部補習班二技模擬考..問題
時間Tue Apr 11 14:32:46 2006
※ 引述《ccpz (OoOoOo)》之銘言:
: ※ 引述《j121780im (Wen)》之銘言:
: : 我算出來答案是3 .
: : 3.若int a=2,b=3 ; 則printf("%d%d%d%d",a++ , --b ; --a ; b++);的輸出結果為?
: : 1.2332
: : 2.2323
: : 3.3333
: : 4.1313
: : 5.以上皆非
: : 我算出來是4.
: 這題覺得和 cmopiler 有關
: 因為參數傳遞是先 push 進 stack,函數中再一個個取出
: 而 stack 最後進的最先出
: 所以在函數中,要和你打的順序一樣的取出順序
: 就要從最後一個開始 push
: 這樣第一次 pop 時才是第一個
: 所以 b++ 先算,再來 --a ...
: 而最後結果是 4 沒錯
: (這是我用 gcc 跑的結果)
我用DEV-C++跑出來是2222..
所以我認為是5以上皆非
列印順序先印A在做+1的動作
然後B先-1在印出....接者;符號表這段結束
此時A已經+1變3了,但他先做-1的動作在印出後面又接了一個分號;
在印出B~此時B值為2印完在做+1的動作...
所以我認為應該是2222
以下為我用C++寫出來類似上面的問題
#include <iostream>
using namespace std;
int main(){
int a=2;
int b=3;
cout<<a++<<"\n"<<--b<<"\n";
cout<<--a<<"\n";
cout<<b++;
system("pause");
return 0;
}
如有錯誤麻煩高手幫忙修正~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.190.169
1F:→ tatsuo769:分號應該是個盲點... 04/11 14:33
2F:→ xsque:分號是打錯 04/11 17:12
3F:→ xsque:printf 是從右到左運算的... 04/11 17:12
4F:→ xsque:你把他分開 這樣 前後順序就變了 04/11 17:13
5F:→ tatsuo769:感謝修正....我果然不會C阿><" 04/14 09:33
6F:→ tatsuo769:感謝提供關鍵..從右往左..感恩..所以答案必為D 04/14 09:35