[转录][闲聊] 新手第八诫

楼主: 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, 应该可以 解决问题
作者: james732 (好人超)   2010-04-01 17:26:00
觉得循环的 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
感谢分享
作者: justdemon (人生的转戾点)   2010-04-01 17:27:00
原始的程式有使用上的限制 一般来说也不是从0开始
作者: sjgau (sjgau)   2010-04-01 17:27:00
不太同意楼上的说法,index 的 ++ or -- , 应该看需要
作者: uranusjr (←這人是超級笨蛋)   2010-04-01 17:28:00
warming...编译器取暖?XD
作者: justdemon (人生的转戾点)   2010-04-01 17:28:00
unsigned的宣告 也是因为这个值确定是正的XXDD 英文不好 请见谅
作者: james732 (好人超)   2010-04-01 17:29:00
原来如此 这个真的很难发现话说MS的VC++竟然可以正常执行...XD
作者: VictorTom (鬼翼&娃娃鱼)   2010-04-01 17:32:00
同意两位j大说的, warming 很难发现到. (光速逃XD)
作者: sawang (Keinohrhasen)   2010-04-01 17:42:00
I like it :)
作者: nowar100 (抛砖引玉)   2010-04-01 18:18:00
Good 等下我改 有事先离 :)
作者: loveme00835 (发箍)   2010-04-01 18:25:00
真好玩 :)
作者: AmosYang (泛用人型编码器)   2010-04-01 18:54:00
有(苦)笑有推 XD
作者: holymars   2010-04-01 22:26:00
这个我之前也碰到过.....
作者: softwind (software everywhere)   2010-04-02 00:48:00
如果是当作index 的确应该是宣告成 unsigned int但 先不管这个部份 int/unsigned int 比大小一直让我觉得很奇怪 有两种说法 一种是 疑虑cast成unsign另一种是先判断signed能不能放 可以一律转成 singed如果放不下 一律转成unsigned 才比较
作者: nowar100 (抛砖引玉)   2010-04-02 00:54:00
同样精确度signed一定转unsigned 不同大小都是看哪个比较大 小的promote成大的 我学到的印象是这样
作者: softwind (software everywhere)   2010-04-02 02:38:00
不是欧 我看到的是 如果两边的值 可以塞进signed 优先用sign 不足 才强制转成unsigned
作者: littleshan (我要加入剑道社!)   2010-04-02 03:49:00
signed 和 unsigned 根本不能比突然想到如果是先看 unsigned 的 msb 来比较就ok了吧?signed 转成 unsigned 是不能比的,-1会变2^32-1
作者: Knighter   2010-04-02 10:03:00
for () 才对

Links booklink

Contact Us: admin [ a t ] ucptt.com