- 論壇徽章:
- 2
|
回復(fù) #6 zx_wing 的帖子
char a[] = "hello";
char* p;
for ( p = a+sizeof(a)-2; p>=a; p-- )
printf("%c\n", *p );
與:
for ( p = a+sizeof(a)-2; p!=a; p-- )
printf("%c\n", *p );
效果是一樣的: 如果真出現(xiàn)那帖里的情況, 不會越界,不會引發(fā)signal, 而是死循環(huán)。
上面2個版本與下面一個版本相比:
for ( p = a+sizeof(a)-1; p!=a /* or p>=a */; ) {
--p;
printf("%c\n", *p );
}
得到的好處就是 : 少寫一行代碼。 就為了這么點好處值得將代碼變得不可移植么?
如果推薦下面一種寫法, 什么煩惱都沒有了, 比如不需要補充這么一句:
筆者無法100%保證,所以大家在實踐中還是各自斟酌吧。
當(dāng)然,會出現(xiàn)回繞的機器只是假象出來的, 也許下面一種寫法的好處永遠(yuǎn)得不到。
我只是反感這么一種風(fēng)氣: 將自己的實踐、 不經(jīng)過嚴(yán)格的論證, 就上升到理論高度, 認(rèn)為那是普遍真理。
我真的不是在說你, 你的文章里至少還有那么一句補充說明, 以說明這種經(jīng)驗的適用范圍。
我其實說的是林銳…… 以及和林銳有相同傾向的一幫人……
算了, 別人寫的代碼是否可移植關(guān)我鳥事 …… 大家愛怎么寫就怎么寫好了……
[ 本帖最后由 OwnWaterloo 于 2009-12-21 18:20 編輯 ] |
|