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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3565|回復: 20
打印 上一主題 下一主題
收起左側

關于C語言if(ms==200)和while(ms==200)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:64817 發表于 2020-7-14 14:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人業余,實在不明白請教個位師傅:  為什么 if(ms==200)不正常,而改為while(ms==200)正常了。不都是MS等于200進去嗎?

/*******************************
if(ms==200)
  {
   ms=0; s=s+1; leds=~leds;   //為了檢測觀察程序,加了一秒leds亮滅一次。
  }      *********/



/*******************************
while(ms==200)
  {
   ms=0; s=s+1; leds=~leds;   //為了檢測觀察程序,加了一秒leds亮滅一次。
  }      *********/





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

使用道具 舉報

沙發
ID:332444 發表于 2020-7-14 16:46 | 只看該作者
判斷是要放到循環里面才能判斷也就是要不停地判斷,循環則是獨占的直到循環完成。
回復

使用道具 舉報

板凳
ID:332444 發表于 2020-7-14 16:47 | 只看該作者
判斷是要放在循環內不停檢查判斷的,循環則是獨占的直到循環完成。
回復

使用道具 舉報

地板
ID:64817 發表于 2020-7-14 16:58 | 只看該作者
xianfajushi 發表于 2020-7-14 16:46
判斷是要放到循環里面才能判斷也就是要不停地判斷,循環則是獨占的直到循環完成。

師傅,不明白if(ms==200),是ms等于200才進if里面的嗎???while(ms==200),不也是ms等于200才進while里面嗎,,ms為其他值時,是都不進if的while和if的吧?
回復

使用道具 舉報

5#
ID:332444 發表于 2020-7-14 17:08 | 只看該作者
哦,是的,變量在中斷的地方計數的話,這2個表達式等同,如果主函數內單獨只執行這2個表達式,而沒受其它的執行語句影響。
回復

使用道具 舉報

6#
ID:332444 發表于 2020-7-14 17:15 | 只看該作者
舉個例子:
#include "reg52.h"
unsigned char code DuLiAnJian[]={1,2,4,8,16,32,64,128,254,253,251,247,239,223,191,127};
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共陰0~F消隱減號
sbit k1=P1^7;
bit k = 0;
void main()
{
        unsigned char wei=0,Xd=0,Sw=0;
        unsigned int Ys=47474,Lx=0;
        while(1)
        {
                if(!k1&&!++Xd){P2=P0=255;if(++Sw>9)Sw=0;while(!k1);}
                while(!--Ys)
                {
                        P2=~smgduan[wei];
                        if(++wei>9)wei=0;
                        Ys=47474;
                }
        }
}

#include "reg52.h"
unsigned char code DuLiAnJian[]={1,2,4,8,16,32,64,128,254,253,251,247,239,223,191,127};
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共陰0~F消隱減號
sbit k1=P1^7;
bit k = 0;
void main()
{
        unsigned char wei=0,Xd=0,Sw=0;
        unsigned int Ys=47474,Lx=0;
        while(1)
        {
                if(!k1&&!++Xd){P2=P0=255;if(++Sw>9)Sw=0;while(!k1);}
                if(!--Ys)
                {
                        P2=~smgduan[wei];
                        if(++wei>9)wei=0;
                        Ys=47474;
                }
        }
}
這樣寫2個程序是一樣的。
回復

使用道具 舉報

7#
ID:332444 發表于 2020-7-14 17:19 | 只看該作者
因為你只給出一點代碼,所以不能管中窺豹。
回復

使用道具 舉報

8#
ID:332444 發表于 2020-7-14 17:21 | 只看該作者
我的舉例上門一個就是獨占的循環,下面一個就是靠主循環的,同樣實行了延時功能。
回復

使用道具 舉報

9#
ID:332444 發表于 2020-7-14 17:23 | 只看該作者
加入把我的代碼修改:
--Ys;
while(!Ys)與if(!Ys)就是等同的。
回復

使用道具 舉報

10#
ID:64817 發表于 2020-7-14 17:36 | 只看該作者
xianfajushi 發表于 2020-7-14 17:23
加入把我的代碼修改:
--Ys;
while(!Ys)與if(!Ys)就是等同的。

首先謝啦!!☆⌒(*^-゜)v,,我還是搞不明白的是既然等同了,我IF里是不正常的,,謝了,,我基礎太差 了
回復

使用道具 舉報

11#
ID:452950 發表于 2020-7-14 17:41 | 只看該作者
就這兩段代碼看的話,while只執行一次就和if功能一樣了,沒有什么區別,非要說區別就是if只判斷一次,如果符合條件就執行一次,while先判斷一次,每次執行完后會再判斷一次。
不知道你說的正常與不正常分別是什么現象
回復

使用道具 舉報

12#
ID:332444 發表于 2020-7-14 17:45 | 只看該作者
#include "reg52.h"
void main()
{
        unsigned char wei=0,Xd=0,Sw=0;
        unsigned int Ys=47474,Lx=0;
        while(1)
        {
                if(!--Ys)
                {
                         leds=~leds;
                        Ys=47474;
                }
        }
}
這樣修改就是LED取反觀察,可以用if與while互換試看。
回復

使用道具 舉報

13#
ID:332444 發表于 2020-7-14 17:53 | 只看該作者
辦公室1天幾千步輕松做到,原地跑步要讓內臟抖起來,每10數五指1節,3*5=150,從拇指到小指為1,再從小指到拇指,數從小指到拇指2次,再從拇指到小指,合計5次,150*5=750,每小時一次,8小時合計6000次,這樣既鍛煉了身體,也鍛煉了思維。
回復

使用道具 舉報

14#
ID:332444 發表于 2020-7-14 17:54 | 只看該作者
這樣運動既適量又等同于專門去跑步
回復

使用道具 舉報

15#
ID:699902 發表于 2020-7-15 11:14 | 只看該作者
你可以查一查if具體用用法,你這種肯定是不對的。
你可以這樣改試一試
if( flag_200ms==1)
回復

使用道具 舉報

16#
ID:311846 發表于 2020-7-15 11:31 | 只看該作者
多看看 if語句和while語句再結合程序 多研究會就明白了,別人改的不一定適合你的
回復

使用道具 舉報

17#
ID:331263 發表于 2020-7-15 15:50 | 只看該作者
看看書吧,沒理解呀
回復

使用道具 舉報

18#
ID:743654 發表于 2020-7-17 08:52 | 只看該作者
if只判斷一次,接著運行下面的語句;而while先判斷,執行語句運行完畢后,還要進行繼續判斷條件是否符合循環條件,根據判斷的條件,返回執行語句或繼續運行下面的程序。
回復

使用道具 舉報

19#
ID:471889 發表于 2020-7-17 09:34 | 只看該作者
循環語句與判斷語句用好好的去理解一下!@論壇
回復

使用道具 舉報

20#
ID:64817 發表于 2020-7-17 10:46 | 只看該作者
cheney03 發表于 2020-7-17 08:52
if只判斷一次,接著運行下面的語句;而while先判斷,執行語句運行完畢后,還要進行繼續判斷條件是否符合循 ...

師傅可不可以細說一下:
while(1)
{
if(ms==200)
  {
   ms=0; s=s+1; leds=~leds;   //為了檢測觀察程序,加了一秒leds亮滅一次。
  }
if(ts==60)
  {
   ms=0; s=s+1; leds=~leds;   //為了檢測觀察程序,加了一秒leds亮滅一次。
  }
}
不明白IF外還有個死循環呀,IF判斷完了,死循環不是會 讓他接著再判斷嗎。。。多謝了
回復

使用道具 舉報

21#
ID:972377 發表于 2021-10-15 19:01 | 只看該作者
因為if是運算符是取反,0取反是非0,非0取反就是0. 作為條件判斷時,就是一切非0的數都會被判斷為假,只有為0時才會判斷為真。 具體怎么寫,一般都是根據程序的業務邏輯來決定的。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本不卡一区二区三区在线观看 | 中文字幕综合 | 欧美91| 欧美性tv | 青青草华人在线视频 | 国产一区二区三区精品久久久 | av资源中文在线天堂 | 一区二区三区国产精品 | 久久久久国产一区二区三区四区 | 精品国产免费人成在线观看 | 中文字幕日韩欧美一区二区三区 | 国产免费福利小视频 | 亚洲视频在线一区 | 男女网站免费 | 亚洲欧美精品久久 | 精品免费av | 中文字幕视频在线 | 国产日韩精品久久 | av色在线| 亚洲欧美激情精品一区二区 | 国产精品一区二区日韩 | 欧美福利视频 | 中文字幕在线精品 | 黄色成人亚洲 | 久草.com | 狠狠涩| 成人精品一区二区 | 中国黄色在线视频 | 亚洲精品成人免费 | 亚洲精品一区二区三区蜜桃久 | 欧美激情综合色综合啪啪五月 | 国产精品伦理一区 | 在线国产欧美 | 精品一区二区电影 | 欧美日韩久 | 在线观看视频你懂得 | 欧美视频一区二区三区 | 欧美一区二区在线播放 | 精品人伦一区二区三区蜜桃网站 | 免费毛片网站在线观看 | 91视视频在线观看入口直接观看 |