其他分享
首页 > 其他分享> > C 语言流程控制

C 语言流程控制

作者:互联网

image

顺序执行

C 语言的程序是顺序执行,即先执行前面的语句,再执行后面的语句。

条件执行

if语句用于条件判断,满足条件时,就执行指定的语句。

if (expression) {
  statement // 表达式expression为真(非 0 值)时,就执行 statement 语句。
}
if (line_num == MAX_LINES) {
  line_num = 0;
  page_num++;
}

对于只有一条语句的语句体,可以省略大括号。

if (x == 10)
  printf("x is 10\n");
if (expression) {
  statement
} else { // else 分支,指定条件不成立时(表达式 expression 的值为 0),所要执行的代码。
  statement
} 
if (expression) {
  statement
} else if (expression) {
   statement
} ...
else {
  statement
}
switch (expression) {
  case value1: 
    statement
  case value2: 
    statement
  default: 
    statement
}

根据表达式expression不同的值,执行相应的case分支。如果找不到对应的值,就执行default分支。

switch (grade) {
  case 0:
    printf("False");
    break; // 如果缺少 break,就会导致继续执行下一个 case 或 default 分支。
  case 1:
    printf("True");
    break;
  default:
    printf("Illegal");
}
<expression1> ? <expression2> : <expression3>

表达式expression1如果为true(非 0 值),就执行expression2,否则执行expression3

循环执行

while语句用于循环结构,满足条件时,执行循环体。此外,循环体内部可以用break语句跳出循环。

while (expression) { 
	statement // expression 为非零值(表示真),就会执行statement语句,然后再次判断 expression 是否为零;
}

不管条件expression是否成立,循环体statement至少会执行一次。每次statement执行完毕,就会判断一次expression,决定是否结束循环。

do {
  statement
} while (expression);
for (循环变量初始化; 条件判断; 修改循环变量){
	statement; 
}

每个部分可以有多条语句。

int i, j;
for (i = 0, j = 999; i < 10; i++, j--) {
  printf("%d, %d\n", i, j);
}

break 语句

break语句有两种用法。

for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    printf("%d, %d\n", i, j);
    break; // break 语句使得循环跳到下一个 i。
  }
}

注意,break命令只能跳出循环体和switch结构,不能跳出if结构。

continue 语句

continue语句用于在循环体内部终止本轮循环,进入下一轮循环。

while ((ch = getchar()) != '\n') {
  if (ch == '\t') continue; // 只要读到的字符是制表符(\t),就跳过该字符,读取下一个。
  putchar(ch);
}

goto 语句

goto 语句用于跳到指定的标签名处。

char ch;

top: ch = getchar();

if (ch == 'q')
  goto top;

goto 的一个主要用法是跳出多层循环。

while (...) {
  do {
    if (some_error_condition)
      goto bail;    
  } while(...);
}
    
bail:

参考: C 语言教程

标签:语句,控制,语言,流程,break,while,statement,执行,expression
来源: https://www.cnblogs.com/knhap/p/16376772.html