C語言空語句的作用
空語句一般有以下幾個用途:
1.純粹消耗CPU時間,起到延時的作用,但是注意一下,"雨落深山"說的有問題的,在嵌入式系統中一般不會這么用,原因如下:
對于嵌入式系統來講,不論是哪種系統,一般下位芯片級的時間單位為Tick,這樣的處理單位對于Tick來說太粗略了。
但是在嵌入式系統中,有一種情況下會用到:
不需要很高的精確度,并且要避免引起Task切替的延遲處理時,有時會這么用。因為起計時器進行延遲的話,超時處理會引起調度進程的輪循,出現Task切替。
2.為了程序的結構清楚,可讀性好,以后擴充新功能方便。有些公司的編碼規范要求,對于if/else語句等,如果分支不配對的話,需要用空語句進行配對,一般日系企業這么要求的比較多。
例如:
正常的這么做就行:
if(XXX)
{
XXXXX
}
但是編碼規范要求,必須這么寫
if(XXX)
{
XXXXX
}
else
{
;
}
3. 對于某些大型的軟件項目,特別是一些嵌入式項目,處于自動化測試的需要,要求必須進行語句(例如,if/else語句)的配對。
在進行代碼靜態解析,單體測試Case抽出的時候,為了保證全路徑覆蓋,很多專業的高端自動測試工具,會建議進行語句(例如,if/else語句)的配對。此時對于一些不完備的分支,就會用空語句補全。
C語言中while 空語句的作用
我覺的這里while(key == 0);的作用是讓程序停在這里,等待key != 0 滿足后繼續往下執行。
如果這里key對應外面的按鍵,并且key == 0 表示按鍵被按下,則外面的while(1) 循環是用來檢測按鍵是否被按下,當檢測到按鍵被按下,即if(key == 0)成立 ,執行while(key == 0); 空循環,在這里就應該是等待按鈕松開,當按鈕松開,key == 0 不再滿足,就跳出循環往下執行。
如果沒有這個空循環:
void main()
{
P1=0xff;
led=1;
while(1)
{
if(key==0)
{
led=~led;
delay(20);
}
}
}那么當你一直按著按鍵的時候,if(key == 0)始終滿足,會重復執行while(1)中的程序,導致led燈不停改變亮暗狀態,直到你抬起按鍵。仔細看你修改的程序,也會出現相同的結果。
c語言中的空語句
所謂的空語句就是說沒有執行代碼,只有一個語句結束的標志:分號
例如:int a = 1;
1 while(1)
2 {
3 ;
4 a++;
5
6 if(a == 10)
7 break;
8}
第三行就是空語句,當程序執行到第三行的時候,什么都不做,繼續往下執行第四行,空語句不會影響程序的功能和執行順序,第五行是空行,與空語句不同,程序執行到第五行的時候會忽略空行,而不會忽略空語句。具體的作用我只是在測試的時候用過
空語句起到延時作用中的“延時”是什么意思
拖時間,明了吧?
有時候,要控制程序的執行速度,
就可以加空語句,比如重復20000次,只計數,沒有實際操作語句.
這樣,程序要運行循環計數,就會有停頓下來的感覺.特別是在
在比較老的機器上,效果很明顯哦.
由于不同CPU運算速度不同,這個延時表現也會有不同的.
特別是在寫一些控制臺(DOS)程序時,可能要讓使用者看清輸出結果,再往下執行,又不想使用者參與輸入,要程序自然停頓,就可以加空循環來起到延時作用.