找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1948|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

新手關(guān)于C語言for嵌套語句的問題,請(qǐng)大家?guī)臀铱纯,謝謝了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:404479 發(fā)表于 2018-10-3 03:02 來自觸屏版 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這個(gè)子函數(shù),我就搞不懂,兩個(gè)for,原理我懂,我搞不懂為什么要把這里的y定義成字符變量?明明可以和x一樣定義成無符號(hào)整形的,還有就是,第一個(gè)for里面,我把x=z,z在前面的值是delay(100),那么相當(dāng)于z=100,我首先將z代進(jìn)x為:
for(x=z;x>0;a--)   
for(y=100;y>0;y--);
我在把z代進(jìn)y,如下:
for(x=100;x>0;x--)   
for(y=z;y>0;y--);
為什么這兩種方式,我調(diào)試時(shí),為什么他們兩種的延時(shí)時(shí)間都不一樣,按理來說,都是一樣的值,結(jié)果會(huì)一樣的呀,不都是100*100=10000嗎?同理,如果我就算把z給取消了,變成不需要參數(shù)值的delay,那么假如,x=10,y=100,依次寫入兩個(gè)for嵌套循環(huán),x在第一個(gè)for,y在第二個(gè)for,,然后,我又交換,y在第一個(gè)for,x在第二for,為什么,第一種,10*100,第二種,100*10,循環(huán)次數(shù)一模一樣,為何他們延時(shí)的時(shí)間有差異,求各位老師,各位大神幫我分析分析,小弟感謝各位了!

IMG_20181003_013836.jpg (67.69 KB, 下載次數(shù): 28)

IMG_20181003_013836.jpg

IMG_20181003_025949.jpg (83.53 KB, 下載次數(shù): 38)

IMG_20181003_025949.jpg

IMG_20181003_030118.jpg (78.27 KB, 下載次數(shù): 36)

IMG_20181003_030118.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:387733 發(fā)表于 2018-10-3 08:43 | 只看該作者
       x定義成uint是因?yàn)樵试S調(diào)用函數(shù)時(shí),參數(shù)可以大于255的需要。而y是確定不會(huì)大于255,使用uchar只占用一個(gè)字節(jié),節(jié)約內(nèi)存,還便于計(jì)算延時(shí)時(shí)間。
       這個(gè)延時(shí)函數(shù)是利用計(jì)算機(jī)執(zhí)行每一條指令所消耗的時(shí)間累計(jì)完成的,不同的指令占用的時(shí)間是不一樣的,不同的循環(huán)使用的機(jī)器指令也是不一樣的,所以簡單地把2個(gè)循環(huán)值相乘只能是大致上的延時(shí)。精確的延時(shí)是要逐條累加每個(gè)循環(huán),每條指令的執(zhí)行時(shí)間。
        即便這樣,如果程序中有中斷要處理,也會(huì)影響延時(shí)的時(shí)間。

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:386381 發(fā)表于 2018-10-5 21:56 來自觸屏版 | 只看該作者
應(yīng)該是兩個(gè)變量所占的字節(jié)大小不同,系統(tǒng)處理的時(shí)間有差異吧
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表