C 和 C++ 程序员会发现 D 中的语句很熟悉,另外还有一些有趣的扩充。
语句:
;
非空语句
作用域语句块
无作用域非空语句:
非空语句
块语句
无作用域语句:
;
非空语句
块语句
非空或无作用域语句块:
非空语句
作用域语句块
非空语句:
标号语句
表达式语句
声明语句
If语句
条件语句
While语句
Do语句
For语句
Foreach语句
Switch语句
Case语句
Default语句
Continue语句
Break语句
Return语句
Goto语句
With语句
Synchronized语句
Try语句
ScopeGuard语句
Throw语句
Volatile语句 (2.014中没有)
Asm语句
Pragma语句
Mixin语句
ForeachRangeStatement (2.014)
1 作用域(scope)语句
作用域语句:
非空语句
块语句
对于 非空语句 或 块语句 会引入新的 用于
局部符号 的作用域。
即使会引入一个新的作用域,局部符号 的声明也不能掩盖(隐藏)在同一函数里的 其它的局
部符号声明。
void func1(int x)
{ int x; // 非法,x 掩盖了参数 x
int y;
{ int y; } // 非法,y 掩盖了封闭域里的 y
void delegate() dg;
dg = { int y; }; // 正确,这个 y 不在同一个函数里
struct S
{
int y; // 正确,这个 y 是个成员,不是个局部变量
}
{ int z; }
{ int z; } // 正确,这个 y 没有掩盖其它的 z
{ int t; }
{ t++; } // 非法,t 未定义
}
此思想用于避免在复杂函数里,由于限定域里的声明无意识情况,隐藏了前面的声明而引起的错漏。在一个函数里的那些 局部变量名 应该全部唯一。
2 作用域块语句
作用域块语句:
块语句
作用域块语句会为 块语句 引入新的作用域。
3 标号语句
语句可以有标号。标号是一种标志符,其后跟随一条语句。
标号语句:
标识符 ':'无Scope语句
包括空语句在内的任何语句都可以有标号,因此都可以作为 goto 语句的目标。标号语句也
可以用作 break 或者 continue 语句的目标。
标号位于独立的名字空间中,不与声明、变量、类型等位于同一名字空间。就算如此,标号
也不能同局部声明 重名。标号的名字空间是它们所在的函数体。标号的名字空间 不嵌套,也
就是说,一个语句块中的标号 可以在语句块外访问。
4 块语句
块语句:
{ }
{ 语句列表 }
语句列表:
语句
语句 语句列表
语句块是由{ }包括起来的语句序列。其中的语句按照 词法顺序执行。
5 表达式语句
表达式 ;
表达式会被计算。
没有作用的表达式,如 (x + x),在表达式语句中是非法的。如果需要这个表达式,那么
将它的类型转换为 void 就可以让它合法。
int x;
x++; // 正确
x; // 非法
1+1; // 非法
cast(void)(x + x); // 正确
6 声明语句
声明语句声明并初始化变量。
声明语句:
单个声明
一些声明语句:
int a; // 把 a 声明成类型 int,并把它初始化为 0
struct S { } // 声明结构 S
alias int myint;
。。。
分享到:
相关推荐
在HttpWatch Pro v6.014版本中,用户可以享受到以下主要功能: 1. **实时性能监控**:在浏览网页时,HttpWatch会实时显示页面加载的各项详细指标,帮助开发者快速定位性能瓶颈。 2. **全面报告**:提供详细的性能...
实战大数据扩展视频.zip.014
DXperience-8.3.5.zip.014
2021给亲人的春节祝福语80句.pdf
MZ_T014.2-2010救灾被服第2部分棉大衣
0-4输 出 语 句.py
datagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-2020.3.2.zipdatagrip-...
cv2.pyd 包含 32位和64位 支持pyhton2.7.........................................................................................................................
美国口语惯用法例句集粹.chm美国口语惯用法例句集粹.chm美国口语惯用法例句集粹.chm美国口语惯用法例句集粹.chm
nginx-1.18.0-2.el7.ngx.x86_64.rpm安装包(含有部署手册) nginx-1.18.0-2.el7.ngx.x86_64.rpm安装包(含有部署手册) nginx-1.18.0-2.el7.ngx.x86_64.rpm安装包(含有部署手册) nginx-1.18.0-2.el7.ngx.x86_64.rpm...
**libssh2.dll** 是一个动态链接库文件,主要用于实现SSH2协议的客户端和服务器端功能。SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。libssh2是一个开源项目,为C语言...
slink固件下载STLinkV2.J16.S4.bin 适用于与STM32F103R8T6 首先我们焊接完的板子是不能用的,需要往里面下载固件。前提是你手头有一块好的ST-LinkV2下载器,不然就白搞了。(用Jlink也可下载) 使用STM32 ST-LINK ...
clickhouse-22.2.2.1-2.rpm离线安装包包含clickhouse-common-static-22.2.2.1-2.x86_64.rpm,clickhouse-client-22.2.2.1-2.noarch.rpm,clickhouse-server-22.2.2.1-2.noarch.rpm共3个离线安装rpm包。 安装: rpm -...
linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6.8.1.tar.bz2linux-2.6....
TouchWin编辑工具V2.C.6序列号
AXMLPrinter2.S.jar 把反编译出来的layout布局文件解析成正常代码
英语习语学习大全7.pdf
C1.Win.C1FlexGrid.2 是一个专为Windows应用程序设计的强大网格控件,它提供了丰富的功能和灵活性,使得开发者可以轻松地在他们的应用中实现数据的显示和编辑。C1FlexGrid是一款由ComponentOne公司开发的专业级表格...
**json.js** 和 **json2.js** 是两个JavaScript库,用于在浏览器环境中处理JSON数据。`json.js`可能是早期的一个JSON处理库,它提供了JSON的解析(`parse()`)和字符串化(`stringify()`)功能,使得在不支持JSON的...