久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2269|回復: 16
收起左側

這個C語言函數有點不解,A與B應該是一樣的吧?為什么專家要這樣寫呢?

  [復制鏈接]
ID:382454 發表于 2019-10-18 15:20 | 顯示全部樓層 |閱讀模式
這個函數有點不解,A與B應該是一樣的吧?   為什么專家要這樣寫呢?
就是 while( (ms--) != 0)這里  為什么要加個!=0呢????意義是什么?
下面的void Delay_B_ms(unsigned int ms)我執行了一下,一樣的啊。

while(ms--)
  1. #include<reg52.h>                                //52系列單片機頭機文件
  2. #include<intrins.h>
  3. #define uint unsigned int                //宏定義
  4. #define uchar unsigned char                //宏定義

  5. //****************************//
  6. void Delay_A_ms(unsigned int ms)
  7. {
  8.   while( (ms--) != 0)        
  9.   {
  10.     P0=~P0;;
  11.   }            
  12. }
  13. //*******************************//
  14. void Delay_B_ms(unsigned int ms)
  15. {
  16.   while(ms--)
  17.   {
  18.     P0=~P0;;
  19.   }            
  20. }

  21. /*******************************************************************************
  22. * 函 數 名       : main
  23. * 函數功能                 : 主函數
  24. * 輸    入       : 無
  25. * 輸    出             : 無
  26. *******************************************************************************/
  27. void main()
  28. {        
  29.         P0=~P0;
  30.         Delay_B_ms(3);
  31.         P0=~P0;        
  32.                
  33. }
復制代碼


回復

使用道具 舉報

ID:195690 發表于 2019-10-18 16:11 | 顯示全部樓層
意思就是延時那么長時間的機器周期,程序停在那里,當ms的值減到0的時候結束循環,執行后面的語句
回復

使用道具 舉報

ID:282850 發表于 2019-10-18 16:53 | 顯示全部樓層
while( (ms--) != 0)是意思是:當ms,如初始ms=1000,自減1,為999,如果ms沒有=0,則一直反復自減,到0時跳出while。
回復

使用道具 舉報

ID:621475 發表于 2019-10-18 17:05 來自手機 | 顯示全部樓層
A,B的確一樣,但A并沒有調用
回復

使用道具 舉報

ID:246215 發表于 2019-10-18 17:15 | 顯示全部樓層
為了讓你們能看懂
回復

使用道具 舉報

ID:332444 發表于 2019-10-18 17:27 | 顯示全部樓層
可以顯式寫邏輯表達式,也可以使用默認值0表示假大于0都表示真,2種都是一樣,寫任何一種形式沒一定要求,或許前復制的或許后自寫的,這個根本就不必細究。
回復

使用道具 舉報

ID:235200 發表于 2019-10-18 18:48 | 顯示全部樓層
邏輯上是一樣的,可能編譯后產生的代碼有差別,至于專家為什么這么寫,估計是每一個人的編程習慣不一樣,也許當初未想清楚,但對于精度不高的時候影響看不出來,你這兩個程序應該不是出自一個專家
回復

使用道具 舉報

ID:616759 發表于 2019-10-18 20:29 | 顯示全部樓層
幫你的代碼調試了下,Delay_B_ms(3)和Delay_A_ms(3)都執行了三次取反,所以你的結論是對的哦,unsigned int的范圍是0~255,所以m--到0就不可以了,即等于0的時候就停止自減,和上面的那個不等于0是一樣的
回復

使用道具 舉報

ID:382454 發表于 2019-10-19 06:50 來自手機 | 顯示全部樓層
俺就是看不懂專家寫的啊,有點抽。所以才問大家,可能俺太菜了!喔喔!!
回復

使用道具 舉報

ID:626474 發表于 2019-10-19 09:05 | 顯示全部樓層
這是循環停止的意思,如果直接添1就會陷入無限循環了,加!=0為了根據個人需求來停止循環
回復

使用道具 舉報

ID:434308 發表于 2019-10-19 14:28 | 顯示全部樓層
每個程序員的打碼習慣不一樣
回復

使用道具 舉報

ID:611461 發表于 2019-10-19 14:43 | 顯示全部樓層
while( (ms--) != 0) :while是個循環語句,滿足括號里的條件執行循環,當條件不滿足時會跳出循環,里面小括號是傳遞的參數,讓他循環遞減,沒減一次需要耗費一定的時間,!=這個表示不等于,就是ms不等于0時執行循環里面的語句,當他等于0時就會跳出循環,執行其他語句
回復

使用道具 舉報

ID:40861 發表于 2019-10-19 16:15 | 顯示全部樓層
好好學習天天向上
回復

使用道具 舉報

ID:627436 發表于 2019-10-21 10:46 | 顯示全部樓層
第一種寫法為了讓新手能看明白吧
回復

使用道具 舉報

ID:296956 發表于 2019-10-21 15:43 | 顯示全部樓層
一樣的, 實際編譯可能會代碼優化一樣。
回復

使用道具 舉報

ID:360555 發表于 2019-10-21 17:20 | 顯示全部樓層
邏輯是一樣的
回復

使用道具 舉報

ID:628308 發表于 2019-10-22 16:31 | 顯示全部樓層
一樣的,while本身就是0的時候不循環1的時候才循環
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品99久久久久久大便 | 国产高清免费视频 | 日韩欧美在线一区 | 日韩在线欧美 | 韩日在线视频 | 二区中文字幕 | 午夜影院在线播放 | 精品视频一区二区三区在线观看 | av黄色在线| 精品欧美在线观看 | 亚洲精品久久久久久久久久久久久 | 自拍偷拍第一页 | 国产欧美精品区一区二区三区 | 国产在线视频一区 | 天天天天天操 | 国产成人午夜精品影院游乐网 | a级片在线观看 | 欧美操操操| 超碰国产在线 | 日韩中文一区二区三区 | 日韩欧美一区二区在线播放 | 日日干夜夜操 | 欧美成人精品在线观看 | 日本小电影网站 | 久久九九免费 | 在线观看国产视频 | 欧美一区视频在线 | 97日日碰人人模人人澡分享吧 | 欧美mv日韩mv国产网站91进入 | 网站黄色av | av在线播放网址 | 99re视频| 成人免费观看男女羞羞视频 | 综合精品 | 国产精品一区二区无线 | 日韩欧美国产精品一区二区三区 | 日韩视频一区二区三区 | 亚洲综合色 | 日韩欧美在线观看 | 久视频在线观看 | 久久99精品久久久久久国产越南 |