作者loveme00835 (最愛朴素妍)
看板C_and_CPP
標題Re: [問題] 一段程式的解釋
時間Thu Nov 4 13:22:12 2010
通常我的視線不會停留在這樣的程式碼超過10秒, 不過最近
領薪水心情好就回一下好了. 這個程式非常的老舊, 而且邪
惡至極
※ 引述《bcawosxy (??????)》之銘言:
: 手邊有一小段程式如下!
: 我想請問行式1,2,3及8的中文意思
: 不知道要如何解釋比較通順!!
沒有一個適當名稱說明這個函式能為我們達成
怎樣的工作
ˇ
: 1/ short aaa(short*y,int ncount);
^ 因為陣列名稱用 by value傳遞給
函式時, 一定都是decay成指標,
所以這樣寫很好, 用 short y[]
反而會讓人想用 sizeof 運算子
: 2/ #define count 3
^ 巨集沒有用大寫 + 底線, 容易偽裝成變數
: 3/ short x[count] = {10,26,40};
: 4/ short a = 5;
^ 名稱只有 a 一個英文字母, 根本不知道要用
它來幹嘛
: 5/ main()
^ 回傳 int
: 6/ {
: 7/ short result=0;
^ 唯一命名比較好的變數
: 8/ result=aaa(x,count);
: 9/ result=result*a;
return 0;
: 10/ }
: short aaa(short *y ,int ncount)
: {
: short acc=1;int i;
^ ice cream ?
: for (i=0;i<ncount;i++)
: acc=y[i]*acc;
: return(acc);
: }
從算出來的值來看 result = 10 * 26 * 40 * 5 = 52000
在一個 sizeof( short ) == 2 的平台下, 正數最大只能存
到 32767, 也沒有作好防止溢位的措施, 我把他修改了一下
變成下面這樣 :
http://codepad.org/FrITeJWo
用巨集常數來切換不同 typedefs 來讓 result 有不同的空
間大小, 把函式名稱改成 continuedProduct(連乘積),這
樣直接拿去 google 不用看程式碼都知道他在做啥.
寫程式的人如果沒有花點時間去查一下字典, 思考適當的變
數命名, 雖然方便了自己, 在把程式碼移交給下一個人後,
維護上花費的時間將會多得可怕!
不要說你看不懂這支程式, 因為我也看不懂 XD 這種程式碼
看過就可以刪了, 不要把它背下來浪費你的腦容量
--
◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█
T-ara版怎麼去
████◤
██
◢██◣█
██
████
██
s ~>
T-ara
█/███
██
██
██
█/█ ◢█
██
█/█
歡迎您的光臨
████◤
██
██
██
██◤
███◤
██◤
恩靜、
智妍、
孝敏
█/███
██
█/█
█◤
██
█/██
██
素妍、
居麗、
寶藍
████◤
█◤
◥██◤ █◤
████◤
█◤
ψmakigoto123
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
※ 編輯: loveme00835 來自: 140.121.197.115 (11/04 13:34)
→ stupid0319:像.Net或Java這類變相開源碼,不混亂變數不行啊 11/04 13:41
推 ledia:找自己麻煩嗎 ? XD 11/04 14:02
→ tropical72:這問題..似乎開始網路上瘋狂在po了.. 11/04 14:41
→ bcawosxy:謝謝囉 已經找到答案了^^ 11/04 17:53
→ purpose:就能勝任,通常不用自己改原始碼吧 11/04 18:53
→ uranusjr:ice cream XDDDDDD 11/05 01:34