单片机:下面两个延时函数有什么区别吗,为什么用第二个会不行?

2024-12-28 10:04:33
推荐回答(4个)
回答1:

形参 z 为 uint 型,而 局部变量 x、y 为 int;
使用②函数时,当z 的值 超出 x 的范围时,x 不管如何自加 都 达不到 z的值,这将是一个 死循环。
而①函数,就算 z 超出 x 范围,那也只是 x 无法 获得正确的初值而已,依然有一个初值 进行 运算,最后 都会 =0,所以不会死循环,只会 出点 不对时 的意外。

回答2:

void delay(uint z)
{ int x,y;
for(x=0;x{for(y=0;y<110;y++)}

}
这样就可以了,另外既然已经声明了uint,这里就没必要再用int定义变量了。

回答3:

一个是自减,一个是自加

回答4:

你所谓的“不行”,究竟具体是什么现象???