c語言中的空語句
所謂的空語句就是說沒有執行代碼,只有一個語句結束的標志:分號
例如:int a = 1;
1 while(1)
2 {
3 ;
4 a++;
5
6 if(a == 10)
7 break;
8}
第三行就是空語句,當程序執行到第三行的時候,什么都不做,繼續往下執行第四行,空語句不會影響程序的功能和執行順序,第五行是空行,與空語句不同,程序執行到第五行的時候會忽略空行,而不會忽略空語句。具體的作用我只是在測試的時候用過
C語言空語句的作用
空語句一般有以下幾個用途:
1.純粹消耗CPU時間,起到延時的作用,但是注意一下,"雨落深山"說的有問題的,在嵌入式系統中一般不會這么用,原因如下:
對于嵌入式系統來講,不論是哪種系統,一般下位芯片級的時間單位為Tick,這樣的處理單位對于Tick來說太粗略了。
但是在嵌入式系統中,有一種情況下會用到:
不需要很高的精確度,并且要避免引起Task切替的延遲處理時,有時會這么用。因為起計時器進行延遲的話,超時處理會引起調度進程的輪循,出現Task切替。
2.為了程序的結構清楚,可讀性好,以后擴充新功能方便。有些公司的編碼規范要求,對于if/else語句等,如果分支不配對的話,需要用空語句進行配對,一般日系企業這么要求的比較多。
例如:
正常的這么做就行:
if(XXX)
{
XXXXX
}
但是編碼規范要求,必須這么寫
if(XXX)
{
XXXXX
}
else
{
;
}
3. 對于某些大型的軟件項目,特別是一些嵌入式項目,處于自動化測試的需要,要求必須進行語句(例如,if/else語句)的配對。
在進行代碼靜態解析,單體測試Case抽出的時候,為了保證全路徑覆蓋,很多專業的高端自動測試工具,會建議進行語句(例如,if/else語句)的配對。此時對于一些不完備的分支,就會用空語句補全。
C錯.A是對的,分號是C語句必須的要素,以此標志C語句的結束;B是對的,語法指的的是語句構成是否滿足C語言標準,語意指的是語句要做什么完成什么任務,如同我們追究某句話說的是否通順,而無論它的含義是罵人話還是恭唯話,因此說復合語句在語法上被看作一條語句;空語句用在某些地方將影響程序運行,C錯誤,切記,語句一定是分號結尾的,而不是只有幾個空格罷了,如:for(;;)和for(;;;);D也是對的,賦值表達式末尾加分號就是構成賦值語句,但也要知道若是在宏定義中,這么做將會報錯.。