单片机延时程序C语言

void delayms(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
这是一个大概的延时程序,
程序这么写用uchar型变量的时候有问题,z的大小跟时间没有关系,而将变量类型改为uint型就是ok的,z的大小觉得延时时间的长短。
求大神帮忙解释下,这是为什么?

都有关系,用uchar也能起作用,但是不明显,你就觉得有问题,原因应该是这样的,char型是8位的,就算是无符号的字符型,最大也是255,也就是说你给的值再大就会溢出,没什么用了,比如你给一个256,溢出了,这时候Z的值应该是0,但是这个程序是没错的,你给0和255延时还是不同的,,当然你现在应该明白为什么整型就可以了,因为无符号的int是32位的,而这个数最大值到底有多大,你自己算一下,所以你给的数基本不会溢出,延时明显,字符型主要是用来写字符的,算数的话你还是别用这个类型,各有各的用途
温馨提示:答案为网友推荐,仅供参考
相似回答