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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2446|回復: 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. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
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并沒有調用
回復

使用道具 舉報

5#
ID:246215 發表于 2019-10-18 17:15 | 只看該作者
為了讓你們能看懂
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

9#
ID:382454 發表于 2019-10-19 06:50 來自觸屏版 | 只看該作者
俺就是看不懂專家寫的啊,有點抽。所以才問大家,可能俺太菜了!喔喔!!
回復

使用道具 舉報

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

使用道具 舉報

11#
ID:434308 發表于 2019-10-19 14:28 | 只看該作者
每個程序員的打碼習慣不一樣
回復

使用道具 舉報

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

使用道具 舉報

13#
ID:40861 發表于 2019-10-19 16:15 | 只看該作者
好好學習天天向上
回復

使用道具 舉報

14#
ID:627436 發表于 2019-10-21 10:46 | 只看該作者
第一種寫法為了讓新手能看明白吧
回復

使用道具 舉報

15#
ID:296956 發表于 2019-10-21 15:43 | 只看該作者
一樣的, 實際編譯可能會代碼優化一樣。
回復

使用道具 舉報

16#
ID:360555 發表于 2019-10-21 17:20 | 只看該作者
邏輯是一樣的
回復

使用道具 舉報

17#
ID:628308 發表于 2019-10-22 16:31 | 只看該作者
一樣的,while本身就是0的時候不循環1的時候才循環
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 自拍偷拍在线视频 | 亚洲va欧美va天堂v国产综合 | 欧美多人在线 | 无码一区二区三区视频 | 国产乱码精品一品二品 | 亚洲成av人片在线观看 | 91免费在线| 亚洲成人综合在线 | 亚洲福利视频一区二区 | 亚洲精品自拍 | 国产高清视频一区 | 水蜜桃久久夜色精品一区 | 五月婷婷中文 | 亚洲一区二区精品视频在线观看 | 9色视频在线 | 欧美综合自拍 | 亚洲欧美日韩精品久久亚洲区 | 99久久免费精品国产免费高清 | 精品视频一区二区 | 亚洲影音先锋 | 国产免费又色又爽又黄在线观看 | 黄色精品 | xx视频在线观看 | 最近日韩中文字幕 | 亚洲精品乱码久久久久久蜜桃91 | 国产资源在线播放 | 成人午夜在线 | 亚洲一区二区三区国产 | 黄网站在线观看 | 一区二区三区四区不卡 | 91视频精选 | 亚洲成av人片在线观看无码 | 日韩a | 国产精品久久av | 免费观看一级特黄欧美大片 | 国产午夜精品一区二区三区四区 | 亚洲 欧美 在线 一区 | 亚洲精品2区| 久久久久久九九九九九九 | 超碰最新在线 | 天天天天天操 |