作者:
weii (迷惑失道)
2010-04-02 13:19:42※ [本文轉錄自 C_and_CPP 看板]
作者: justdemon (人生的轉捩點) 看板: C_and_CPP
標題: [閒聊] 新手第八誡
時間: Thu Apr 1 17:17:30 2010
剛剛找出了一個Bug 大概是這樣的
unsigned int a = 0;
int b[10];
for( int i = 9; i >= a; i
作者: VictorTom (鬼翼&娃娃魚) 2010-04-01 17:22:00
呼~~這個case有難發現到, 辛苦了....Orz
作者:
sjgau (sjgau)
2010-04-01 17:24:00把 a 宣告成 int, 應該可以 解決問題
覺得迴圈的 index 還是從 0 開始遞增比較習慣...XD
作者:
sjgau (sjgau)
2010-04-01 17:26:00應改是 compiler 把 i 轉型成 unsigned int, 所產生的剉
作者: VictorTom (鬼翼&娃娃魚) 2010-04-01 17:26:00
他已經找到錯誤了啦, 是提供給第八誡多一個錯誤例子XD
作者:
tiyun (狄雲)
2010-04-01 17:27:00感謝分享
作者:
sjgau (sjgau)
2010-04-01 17:27:00不太同意樓上的說法,index 的 ++ or -- , 應該看需要
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2010-04-01 17:28:00warming...編譯器取暖?XD
unsigned的宣告 也是因為這個值確定是正的XXDD 英文不好 請見諒
原來如此 這個真的很難發現話說MS的VC++竟然可以正常執行...XD
作者: VictorTom (鬼翼&娃娃魚) 2010-04-01 17:32:00
同意兩位j大說的, warming 很難發現到. (光速逃XD)
作者:
sawang (Keinohrhasen)
2010-04-01 17:42:00I like it :)
作者:
AmosYang (泛用人型編碼器)
2010-04-01 18:54:00有(苦)笑有推 XD
作者: softwind (software everywhere) 2010-04-02 00:48:00
如果是當作index 的確應該是宣告成 unsigned int但 先不管這個部份 int/unsigned int 比大小一直讓我覺得很奇怪 有兩種說法 一種是 疑慮cast成unsign另一種是先判斷signed能不能放 可以一律轉成 singed如果放不下 一律轉成unsigned 才比較
同樣精確度signed一定轉unsigned 不同大小都是看哪個比較大 小的promote成大的 我學到的印象是這樣
作者: softwind (software everywhere) 2010-04-02 02:38:00
不是歐 我看到的是 如果兩邊的值 可以塞進signed 優先用sign 不足 才強制轉成unsigned
signed 和 unsigned 根本不能比突然想到如果是先看 unsigned 的 msb 來比較就ok了吧?signed 轉成 unsigned 是不能比的,-1會變2^32-1
作者: Knighter 2010-04-02 10:03:00
for () 才對