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 {} ( 语句块)

语句块由方括号({} )包围起来,内有零个或多个语句。下述是它的一般语法形式:

{ STMT1 STMT2 ... }

语句块依次执行块内的每条语句。一般情况而言,语句间的分隔符和结束符不是必须的。语句块的语法和语义与C 语言的相同。

6.11 while

一般语法形式:

while (EXP) STMT

While 语句和 C 语言的有着相同的语法和语义。上述语句中,只要整数 EXP 的求值结果为非零,分析器将执行 STMT 。

《System语言详解》——6. 语句种类相关推荐

  1. C语言详解系列——分支语句详解if、switch

    文章目录 什么是语句 if语句 悬空else switch语句 break的使用 default 的使用 在之前的分享中,我们了解到了c语言是结构化的程序设计语言.分为顺序结构,选择结构,循环结构三大 ...

  2. Drools 规则语言详解(上)

    http://www.blogjava.net/guangnian0412/archive/2006/06/09/51574.html http://www.blogjava.net/guangnia ...

  3. system()函数详解

    windows下system () 函数详解 windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: int s ...

  4. 如何用c语言编写stm32的程序吗,STM32入门C语言详解

    <STM32入门C语言详解>由会员分享,可在线阅读,更多相关<STM32入门C语言详解(6页珍藏版)>请在人人文库网上搜索. 1.最新 料推荐阅读 flash : 芯片内部存储 ...

  5. 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解

    最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...

  6. c++指针详解_c语言详解sizeof

    一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等. 它并不是函数. sizeof操作符以字节形式给出了其操作数的存储大小. 操作数可以是一个表达式或括在括 ...

  7. System.load 和 System.loadLibrary详解

    System.load 和 System.loadLibrary详解 1.它们都可以用来装载库文件,不论是JNI库文件还是非JNI库文件.在任何本地方法被调用之前必须先用这个两个方法之一把相应的JNI ...

  8. 排座系统c语言,2008noip排座位C语言详解.doc

    2008noip排座位C语言详解 2008noip排座位C语言详解 2.排座椅 (seat.pas/c/cpp)D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是 ...

  9. 有向图邻接矩阵c语言编程,邻接矩阵有向图(一)之 C语言详解

    本章介绍邻接矩阵有向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...

  10. 邻接矩阵用c语言,邻接矩阵无向图(一)之 C语言详解

    本章介绍邻接矩阵无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...

最新文章

  1. vue动态发布到线上_vue在线动态切换主题色方案
  2. 微信8.0.6正式发布,新增了7大变化,个个实用~
  3. 大专python工资有多高-最新 | 2019年Python工程师的平均薪资是多少?
  4. 0502团队项目 SCRUM团队成立
  5. 区位码\机器码\内码关系
  6. log4j 调试时候配置
  7. some example of SAP odata annotation in metadata
  8. 回文数Python解法
  9. Java 9 JShell示例:集合静态工厂方法
  10. 异步分段处理海量数据
  11. qt.qpa.plugin: Could not find the Qt platform plugin “xcb“ in ““ 详细解决办法
  12. 思科模拟器企业网站服务器配置,cisco模拟器配置域名web服务器
  13. 流程图,NS图,伪代码
  14. MFC之菜单栏的相关使用14
  15. 【BUUCTF】CTF_Crypto 密码学_Quoted-printable(引用可打印)
  16. 开源机器人库orocos KDL 学习笔记(四):Forward Kinematric
  17. 《软件工程》期末题型
  18. 递推 SDUT 鬼吹灯之龙岭迷窟
  19. hexo+github搭建个人博客网站问题汇总和解决办法
  20. 抖音直播怎么引流粉丝?抖音直播如何提高人气?

热门文章

  1. Serv-U权限提升再提升--记一次虚拟主机入侵
  2. android平板电脑维修电路图,《图解windows10平板电脑电路原理和维修》大家可以读读看看...
  3. 使用数据库引擎优化顾问添加建议索引
  4. EXCHANGE清除可恢复项目文件夹(就地电子数据展示和保留)
  5. Objective C类方法load和initialize的区别
  6. idea启动tomcat出现‘D:\Programfiles‘ 不是内部或外部命令,也不是可运行的程序
  7. myeclipse中删除tomcat 的server后,重新添加进来的方法
  8. Windows Azure Virtual Machine (33) Azure虚拟机删除重建
  9. C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面...
  10. React Native填坑之旅--Button篇