你可以尝试将num从0累加到255再看看什么情况,
#include
#include
void main()
{
unsigned char num=0;
int index=0;
for(index=0;index<300;index++)
{
printf("%3d ",num);
if(num % 15==0)
{
putchar('\n');
}
num++;
}
}
你的程序中,num变量是在全局声明区定义的,声明类型为unsigned char,也就是无符号字符型变量,问题出现在那个unsigned上了,当你使用(num=9;num>=0;num--)作为循环条件时,num被减到0时,条件依然符合,这就会导致num还要被再减一次,而unsigned char型变量的范围是0-255,它不能够表示负数,问题就在这里了。
你把uchar num;改成char num;试试。
uchar num; 到0后-1溢出了,成FF了,无符号数为255