求大佬解惑!!!
如果只是單獨的一句while陳述句,沒有回圈體,且判斷條件為真,那程式是不是就一直執行while前面的,不會執行后面的?
如
陳述句①
陳述句②
while(1);
陳述句③
陳述句④
uj5u.com熱心網友回復:
是的,一直在死回圈中uj5u.com熱心網友回復:
不會重復執行while前面的陳述句展開你就懂了
while (1)
{
;
}
會一直執行while里面的空陳述句,也就是執行完陳述句1和陳述句2,就停在while(1)上了,什么都不做。
uj5u.com熱心網友回復:
這是典型的死回圈,這個程式執行程序是這樣的:陳述句①--->陳述句②--->while(1) ;
到這里,一直沒有跳出while回圈,一直在執行一個空的陳述句
所以while回圈下面的陳述句③④都沒有執行,而上面的陳述句①②只執行了一次。
uj5u.com熱心網友回復:
只有幾行代碼,其實你可以把代碼寫出來運行一下。uj5u.com熱心網友回復:
前后都不執行了。只會一直執行while (1) ;這也是死回圈。建議樓主自己寫個程式測驗一下~
uj5u.com熱心網友回復:
#include "reg52.h" //此檔案中定義了單片機的一些特殊功能暫存器typedef unsigned int u16; //對資料型別進行宣告定義typedef unsigned char u8;
sbit k1=P3^1;
sbit k2=P3^0;
sbit beep=P1^5;
u8 start=0;
/******************************************************************************** 函 數 名 : delay* 函式功能 : 延時函式,i=1時,大約延時10us*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
void sound()
{
u8 i=100;
while(i--)
{ beep=~beep;
delay(100); }
}
void keypros()
{
if(k1==0) //開始
{
delay(1000);
if(k1==0)
{
start=1;
}
while(!k1);
}
if(k2==0) //停止
{
delay(1000);
if(k2==0)
{ start=0; }
while(!k2);
}
}/******************************************************************************** 函 數 名 : main* 函式功能 : 主函式* 輸 入 : 無* 輸 出 : 無*******************************************************************************/
void main()
{
while(1)
{
keypros();
if(start==1)
{ sound(); }
else { beep=1; }
}
}
uj5u.com熱心網友回復:
這是一個按鍵控制蜂鳴器的代碼,按k1蜂鳴器響,按k2蜂鳴器就不響,但是如果我一直按著k2不送開的話,按上面說的:那代碼就一直處在while(!k2);的位置,也就不會往下運行,蜂鳴器也還是響的,可我不管是長按k2還是短按,蜂鳴器都不再響轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/124447.html
標籤:C語言
上一篇:多年后重拾編程,碰到難題:如何實作將QQ對話框的圖片物件拖動到程式界面的Timage控制元件(或其他控制元件)并顯示、進行下一步處理
下一篇:c++如何設定整數占幾個字符
