这是一个关于无符号类型数的负数问题,来看个实际例子,比较好说明一点:
void example(void)
{
unsigned char a=5;
a-=7;//////a
while(a)
{
a-=9;//////b
}
}
1:a处执行完毕后,a的数值是多少? 2:会执行到b处吗? 3:该子函数能正常结束吗?
我也是在实际编程时,偶然使用一个算法,遇到这个问题,虽然糊里糊涂地调试通过了,但并不很明白其中原因,所以希望借此仔细研究下这个问题,以免下次再入此坑。
问题可能很简单,但我着实还没搞明白,所以在自己查资料的同时,也想发上来,让大家一起看下,讨论下这个C语言问题,说不定又会有新的收获 ;)
|