在c语言中混用有符号数和无符号数是一件需要高度注意的事,经常见到下面的例子:
1>
unsigned int uRet ;
if (uRet < 0)
{.....}
括号中永远执行不到
2>
uLen = nEnd - nStart;
memcpy(a, b, uLen);
如果nEnd < nStart就完蛋了
3>
#define FLAGS 0x80
char chRet = 0x80;
......
if (chRet == FLAGS)
{
printf ("ok");
}
不会打印ok的,因为会先把chRet转化为无符号数.
所以要小心无符号数,特别是把有符号数转化为无符号数更要加倍小心。
有些语言,如java,就没有无符号数这种东西。