6. 語句種類
systemtap 指令碼語句使開發人員在函式和探針處理函式編寫結構化的控制流程。乙個探針事件內執行語句數目不能超過maxaction ,預設值為1000 ,參閱1.6 節。
6.1 break 和continue
break 或continue 用於跳出或迭代最內層的 迴圈語句,如while,for或foreach語句。它們的語法和語義均與 c 語言的相同。
6.2 delete
delete刪除乙個元素。
下述語句從array 組數中刪除由下標元組指定的元素。刪除後,元素不再存在,下次迭代將不會訪問該元素。刪除不存在的元素不會引致錯誤。
delete array[index1, index2, ...]
下述語法刪除array 陣列內的所有元素:
delete array
下述語句刪除(譯者注:準確地說應該是重置)sclar 變數的值。整數和字串變數分別復原為0 和 null("") ,而統計變數復原這它們初始時的空狀態。
delete scalar
6.3 exp (表示式)
表示式的計算結構為字串或整數值,最終丟棄該值(譯者注:表示式不能儲存計算機結果,只能將之賦給其它變數,但對表示式來的,此值被之丟掉)。
6.4 for
一般語法形式:
for (exp1; exp2; exp3) stmt
for語句類似於c 語言的for 語句。for表示式先執行初始化exp1 ,當exp2 非零時,執行stmt ,然後執行迭代表示式exp3 。
6.5 foreach
一般語法形式:
foreach (var in array) stmt
foreach 語句 迴圈遍歷全域性陣列 array 的每個元素,並將當前鍵值(譯者注:即陣列下標)賦給 var 變數。 foreach 語句內不能對陣列作任何更改。如果 var 或 array 識別符號後跟隨乙個加號( + )或減號( - ),那麼迭代順序變為下標或元素值的公升序順序或降序順序。
下述語句的行為與第乙個例子相同,不同之處是它的下標是乙個鍵值元組(tuple of keys )。最多只能在乙個var 或array 識別符號上使用迭代順序字尾(sorting suffix )。
foreach ([var1, var2, ...] in array) stmt
下述語句同樣與第乙個例子相同,不同之處是關鍵字limit 限制 迴圈 最多迭代exp 次 。 exp 的值只在迴圈開始時計算一次。
foreach (var in array limit exp) stmt
6.6 if
一般語法形式:
if (exp) stmt1 [ else stmt2 ]
if 語句將exp 的整數值與0 比較,如果非零則執行第乙個stmt ,否則執行第二個stmt 。
if 語句和c 語言中的if 語句有相同的語法和語義。
6.7 next
next 語使包含它的探針處理函式立即退出。
6.8 ; (空語句)
一般語法形式:
statement1
;statement2
逗號表示空語句,即不做任何事情。它作為語句間可選的分隔符,通常有助於檢測語法錯誤和處理某種語法二義性。
6.9 return
一般語法形式:
return exp
return 語句從包含的函式返回exp 的值。如果函式沒有返回值,則函式體內不需要return 語句,沒有返回值函式的型別稱為特殊的unknown 型別。
6.10 {} ( 語句塊)
語句塊由方括號({} )包圍起來,內有零個或多個語句。下述是它的一般語法形式:
語句塊依次執行塊內的每條語句。一般情況而言,語句間的分隔符和結束符不是必須的。語句塊的語法和語義與c 語言的相同。
6.11 while
一般語法形式:
while (exp) stmt
while 語句和 c 語言的有著相同的語法和語義。上述語句中,只要整數 exp 的求值結果為非零,分析器將執行 stmt 。
C語言中的system函式引數詳解
函式名 system 功 能 發出乙個dos命令 用 法 int system char command system函式已經被收錄在標準c庫中,可以直接呼叫 system 函式用於向作業系統傳遞控制台命令列,以windows系統為例,通過system 函式執行命令和在dos視窗中執行命令的效果是一...
C語言if語句詳解
用if語句可以構成分支結構。它根據給定的條件進行判斷,以決定執行某個分支程式段。c語言的if語句有三種基本形式。1 第一種形式為基本形式 if if 表示式 語句 其語義是 如果表示式的值為真,則執行其後的語句,否則不執行該語句。其過程可表示為下圖。例5 3 main 本例程式中,輸入兩個數a b。...
C語言switch語句詳解
include stdio.h void main 這裡沒有用到break.輸入1,得到 abcde 輸入2,得到 bcde 輸入3,得到 cde 問 1,case如果是條件式子,為什麼輸入 2 的時候,與 3 4 不符,也會輸出 cd 2,如果不是條件式子,為什麼輸入 2 的時候,a 又沒能輸出?...