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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2315|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人艳妇aa视频在线 | 成人精品视频在线观看 | 亚洲一区二区三区免费在线观看 | 午夜精品久久久久久久久久久久久 | 国产成人av在线 | 韩日一区二区 | 国产亚洲精品精品国产亚洲综合 | 亚洲精品久久久9婷婷中文字幕 | 欧美成人精品二区三区99精品 | 亚洲精品99 | 国产精品99久久久久久动医院 | 99re在线视频观看 | 1区2区视频 | 91精品国产色综合久久不卡蜜臀 | 黄视频网址| 夜夜爽夜夜操 | 欧美激情一区二区三区 | 黄色大片在线 | 国产激情亚洲 | 激情久久av一区av二区av三区 | 亚洲在线 | 亚洲国产激情 | 日韩免费福利视频 | 日韩三级电影一区二区 | 午夜欧美 | 奇米四色在线观看 | 亚洲精品自拍 | 成人二区 | 午夜视频网 | 欧美精品一二三 | 国产视频福利在线观看 | 中文字幕在线一区二区三区 | 夜夜草导航 | 激情国产视频 | 久久影音先锋 | 日韩精品极品视频在线观看免费 | 女人精96xxx免费网站p | 精品一区二区三区在线播放 | 日本成人一区二区 | 亚洲在线一区 | 亚洲欧美一区二区三区国产精品 |