Re: [問題] 有關巨集的問題
作者: karcher (Grothendieck ) 看板: C_and_CPP
標題: Re: [問題] 有關巨集的問題
時間: Mon Jul 6 23:41:59 2009
淺水太久,出來賺點P幣
答案應該為3
以下是以前寫一個遊戲用到的巨集
遊戲玩法類似有一堆卡片
如果有兩張卡片是一樣的而且可以找到一條路,就由程式判斷可不可以消牌
typedef struct Square
{
int width;
int height;
Point center; // the center position of the card
int pic; // content of the card
};
std::vector<int> ShowPic[8*9]; //卡片
..
..
..
enum
{
JOKE = 0,
..
..
..
EMPTY = 54088
};
#define Response(b,c,d,e)
switch(test_mode)
{
case 0:
ShowPic[8*b + c].pic = ShowPic[8*d+e].pic =EMPTY; ////消牌
break;
case 1:
test_first_row = (ShowPic[8*b+c].center.x-initx)/26;
test_first_column = (ShowPic[8*b+c].center.y-inity)/36;
test_second_row = (ShowPic[8*d+e].center.x-initx)/26;
test_second_column = (ShowPic[8*d+e].center.y-inity)/36;
PossibleWay(); ////判斷更兩張牌是否有解,包含去找路線,很多層迴圈...
break;}
※ 引述《Fenikso (ばかちーは俺の嫁)》之銘言:
: ※ 引述《CsAtPccu (站慄時空)》之銘言:
: : 最近參加一個考試,其中有一題題目如下
: : 下列何者不是巨集處理器的優點
: : 1. 減少程式長度
: : 2. 可重複使用
: : 3. 提升程式的執行效率
: : 4. 使程式容易瞭解
: : 答案公佈為 3
: : 但我認為是 1
: : 我的看法如下:
: : 巨集展開來後,程式會比用 function call 還大
: : 因為不是用 function call,所以效率會比較好
: : 不知是我的認知有錯還是答案是錯的,請問各位的看法如何 ?
: 以下全部是我的猜測(汗
: 首先, 要講優點一定要有個對照組
: 你假設對照組是function call
: 但是這題並不是要你拿macro跟function比,
: 因為macro跟function其實差不多..根本沒辦法選
: 要比較的是用macro跟不用macro
: 什麼意思呢?
: 這是用macro的版本:
: #define f(x) ((x)*(x))
: int main() {
: cout << f(1) << ' ' << f(2) << endl;
: }
: 這是不用macro的版本:
: int main() {
: cout << ((1)*(1)) << ' ' << ((2)*(2)) << endl;
: }
: 這樣一比就會發現
: 1. 不用macro的code的確變長了 (x的..我根本在睜眼說瞎話XD)
: 2. macro可以重複使用
: 3. 效率不變, 經過preprocessor後兩段code是一樣的
: 4. 大概吧...(汗)
: 答案是3.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.87.141
※ 編輯: karcher 來自: 220.137.87.141 (07/06 23:47)
推
07/07 01:17, , 1F
07/07 01:17, 1F
→
07/07 01:18, , 2F
07/07 01:18, 2F
→
07/07 01:18, , 3F
07/07 01:18, 3F
→
07/07 20:31, , 4F
07/07 20:31, 4F
→
07/07 20:32, , 5F
07/07 20:32, 5F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章