在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,就没有无符号数这种东西。
博客指出在C语言中混用有符号数和无符号数需高度注意,列举了几个例子,如条件判断执行不到、计算结果异常、比较结果不符预期等,强调使用无符号数,尤其是有符号数转无符号数时要加倍小心,还提到Java没有无符号数。

被折叠的 条评论
为什么被折叠?



