标题: 新手关于C语言for嵌套语句的问题,请大家帮我看看,谢谢了 [打印本页]

作者: tanghao8887    时间: 2018-10-3 03:02
标题: 新手关于C语言for嵌套语句的问题,请大家帮我看看,谢谢了
这个子函数,我就搞不懂,两个for,原理我懂,我搞不懂为什么要把这里的y定义成字符变量?明明可以和x一样定义成无符号整形的,还有就是,第一个for里面,我把x=z,z在前面的值是delay(100),那么相当于z=100,我首先将z代进x为:
for(x=z;x>0;a--)   
for(y=100;y>0;y--);
我在把z代进y,如下:
for(x=100;x>0;x--)   
for(y=z;y>0;y--);
为什么这两种方式,我调试时,为什么他们两种的延时时间都不一样,按理来说,都是一样的值,结果会一样的呀,不都是100*100=10000吗?同理,如果我就算把z给取消了,变成不需要参数值的delay,那么假如,x=10,y=100,依次写入两个for嵌套循环,x在第一个for,y在第二个for,,然后,我又交换,y在第一个for,x在第二for,为什么,第一种,10*100,第二种,100*10,循环次数一模一样,为何他们延时的时间有差异,求各位老师,各位大神帮我分析分析,小弟感谢各位了!

IMG_20181003_013836.jpg (67.69 KB, 下载次数: 28)

IMG_20181003_013836.jpg

IMG_20181003_025949.jpg (83.53 KB, 下载次数: 38)

IMG_20181003_025949.jpg

IMG_20181003_030118.jpg (78.27 KB, 下载次数: 36)

IMG_20181003_030118.jpg

作者: sxhwdz    时间: 2018-10-3 08:43
       x定义成uint是因为允许调用函数时,参数可以大于255的需要。而y是确定不会大于255,使用uchar只占用一个字节,节约内存,还便于计算延时时间。
       这个延时函数是利用计算机执行每一条指令所消耗的时间累计完成的,不同的指令占用的时间是不一样的,不同的循环使用的机器指令也是不一样的,所以简单地把2个循环值相乘只能是大致上的延时。精确的延时是要逐条累加每个循环,每条指令的执行时间。
        即便这样,如果程序中有中断要处理,也会影响延时的时间。
作者: 文凤轩    时间: 2018-10-5 21:56
应该是两个变量所占的字节大小不同,系统处理的时间有差异吧




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1