作者StubbornLin (Victor)
看板C_and_CPP
標題Re: [問題] 面試遇到的一個問題
時間Mon Feb 4 00:27:13 2008
※ 引述《ccu5566 (中正56)》之銘言:
: for(i=0;i<MAX;)
: if( a[i++] == res1 ||
: a[i++] == res2 ||
: a[i++] == res3 ||
: a[i++] == res4 )
: {
: ;
: }//類似這樣用是很好用啦..
下面這兩個簡單易懂沒話說,可是上面那個沒註解的話真的不好懂
再加上用到 || 如果先前有成立後面就不會執行到的特性
如果不知道這程式就不用看了,你可能覺得很好用很理所當然,
但是或許看的人不一定這樣認為,很可能光一個||的問題就讓他困惑和找資料很久
所以個人還是偏好簡單的寫法
char notmatchTable[] = {1, 2, 3, 4};
for(i=0;i<MAX; ++i) {
if(a[i] != notmatchTable[notmatch]) {
++notmatch;
if(notmatch >= 4) {
notmatch = 0;
}
} else {
notmatch = 0;
printf("match at %d\n", i + 1);
}
}
這算是寫複雜了,太早醒來現在頭很痛= =
還可以再更精簡、更易懂、更有效率很多
我個人覺得寫出簡單易懂又有效率的程式碼才是真正困難的
像K&R就真的做到這點
: K&R 2e P.105
: void strcpy(..)
: {
: while((*s = *t) != '\0'){
: s++;
: t++;
: }
: }
: void strcpy(..)
: {
: while((*s++ = *t++) != '\0' )
: ;
: }
--
VICTOR工作室
http://www.kinmen.info/vic/
程式設計教學
http://victorlin.serveftp.org/programming/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.65.223
推 ccu5566:所以說特性基本上都要會 哪天看到別人的程式才不會一改 02/04 00:30
→ ccu5566:就出問題,像我也是看別人程式才特別注意這個特性 02/04 00:32
→ ccu5566:至於喜歡哪種寫法 是個人偏好囉 02/04 00:32
→ StubbornLin:你確定別人改你那樣的程式不會出問題? 02/04 11:22
→ StubbornLin:的確是個人偏好沒錯 但是不良的偏好和別人寫的話 02/04 11:23
→ StubbornLin:痛苦的是別人不是你 = = 02/04 11:24