`
hqs7636
  • 浏览: 224622 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

语 句 2.014

阅读更多
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;


。。。
分享到:
评论

相关推荐

    HttpWatchPro-v6.014

    在HttpWatch Pro v6.014版本中,用户可以享受到以下主要功能: 1. **实时性能监控**:在浏览网页时,HttpWatch会实时显示页面加载的各项详细指标,帮助开发者快速定位性能瓶颈。 2. **全面报告**:提供详细的性能...

    实战大数据扩展视频.zip.014

    实战大数据扩展视频.zip.014

    DXperience-8.3.5.zip.014

    DXperience-8.3.5.zip.014

    2021给亲人的春节祝福语80句.pdf

    2021给亲人的春节祝福语80句.pdf

    MZ_T014.2-2010救灾被服第2部分棉大衣

    MZ_T014.2-2010救灾被服第2部分棉大衣

    0-4输 出 语 句.py

    0-4输 出 语 句.py

    datagrip-2020.3.2.zip

    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位)

    cv2.pyd 包含 32位和64位 支持pyhton2.7.........................................................................................................................

    美国口语惯用法例句集粹.chm

    美国口语惯用法例句集粹.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安装包(含有部署手册) nginx-1.18.0-2.el7.ngx.x86_64.rpm...

    libssh2.dll

    **libssh2.dll** 是一个动态链接库文件,主要用于实现SSH2协议的客户端和服务器端功能。SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。libssh2是一个开源项目,为C语言...

    STlink固件下载STLinkV2.J16.S4.bin

    slink固件下载STLinkV2.J16.S4.bin 适用于与STM32F103R8T6 首先我们焊接完的板子是不能用的,需要往里面下载固件。前提是你手头有一块好的ST-LinkV2下载器,不然就白搞了。(用Jlink也可下载) 使用STM32 ST-LINK ...

    clickhouse-22.2.2.1-2.x86_64.rpm离线安装包

    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.bz2

    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序列号

    TouchWin编辑工具V2.C.6序列号

    AXMLPrinter2.S.jar

    AXMLPrinter2.S.jar 把反编译出来的layout布局文件解析成正常代码

    英语习语学习大全7.pdf

    英语习语学习大全7.pdf

    C1.Win.C1FlexGrid.2.

    C1.Win.C1FlexGrid.2 是一个专为Windows应用程序设计的强大网格控件,它提供了丰富的功能和灵活性,使得开发者可以轻松地在他们的应用中实现数据的显示和编辑。C1FlexGrid是一款由ComponentOne公司开发的专业级表格...

    json.js,json2.js 和 json.jar 下载

    **json.js** 和 **json2.js** 是两个JavaScript库,用于在浏览器环境中处理JSON数据。`json.js`可能是早期的一个JSON处理库,它提供了JSON的解析(`parse()`)和字符串化(`stringify()`)功能,使得在不支持JSON的...

Global site tag (gtag.js) - Google Analytics