首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Statements

语句是按顺序执行的C程序的片段。任何函数的主体都是一个复合语句,而这个语句又是一系列的语句和声明:

代码语言:javascript
复制
int main(void)
{ // start of a compound statement
    int n = 1; // declaration (not a statement)
    n = n+1; // expression statement
    printf("n = %d\n", n); // expression statement
    return 0; // return statement
} // end of compound statement, end of function body

有五种类型的陈述:

1)复合陈述

2)表达式语句

3)选择陈述

4)迭代语句

5)跳转语句

标签

任何语句都可以标记,通过在语句本身之前提供一个名字后跟一个冒号。

identifier : statement

(1)

case constant_expression : statement

(2)

default : statement

(3)

1)转到目标。

2)switch语句中的case标签。

3)switch语句中的默认标签。

任何语句(但不是声明)之前都可以有任意数量的标签,每个标签声明标识符是标签名称,在封装函数中它必须是唯一的(换句话说,标签名称具有函数范围)。

标签声明对其本身没有影响,不会改变控制流,或以任何方式修改后面的语句的行为。

复合语句

复合语句或是括号括起来的语句和声明序列。

{ statement | declaration...(optional) }

(1)

复合语句允许将一组声明和语句分组到一个单元中,这些单元可用于预期单个语句的任何位置(例如,在if语句或迭代语句中):

代码语言:javascript
复制
if (expr) // start of if-statement
{ // start of block
  int n = 1; // declaration
  printf("%d\n", n); // expression statement
} // end of block, end of if-statement

每个复合语句都引入了自己的块范围。

具有自动存储持续时间的变量的初始值设定项在声明块内声明,VLA声明符在控制流按顺序通过这些声明时执行,就像它们是声明一样:

代码语言:javascript
复制
int main(void)
{ // start of block
  { // start of block
       puts("hello"); // expression statement
       int n = printf("abc\n"); // declaration, prints "abc", stores 4 in n
       int a[n*printf("1\n")]; // declaration, prints "1", allocates 8*sizeof(int)
       printf("%zu\n", sizeof(a)); // expression statement
  } // end of block, scope of n and a ends
  int n = 7; // n can be reused
}

表达式语句

一个表达式后跟一个分号是一个声明。

expression(optional) ;

(1)

典型C程序中的大多数语句都是表达式语句,例如赋值或函数调用。

没有表达式的表达式称为空语句。它通常用于为for或while循环提供一个空的主体。它也可用于在复合声明结尾处或声明之前携带标签:

代码语言:javascript
复制
puts("hello"); // expression statement
char *s;
while (*s++ != '\0')
    ; // null statement

选择语句

选择语句根据表达式的值在几个语句之一之间进行选择。

if ( expression ) statement

(1)

if ( expression ) statement else statement

(2)

switch ( expression ) statement

(3)

1)if 陈述

2)如果语句带有else子句

3)切换语句

迭代报表

迭代语句重复执行语句。

while ( expression ) statement

(1)

do statement while ( expression ) ;

(2)

for ( init_clause ; expression(optional) ; expression(optional) ) statement

(3)

1) while loop

2) do-while loop

3) for loop

跳转语句

跳转声明无条件传输流量控制。

break ;

(1)

continue ;

(2)

return expression(optional) ;

(3)

goto identifier ;

(4)

1)break语句

2) continue 语句

3)带有可选表达式的return语句

4)goto声明

扫码关注腾讯云开发者

领取腾讯云代金券