Lecture5一C语句 绳伟光 微纳电子学系 上海交通大学 2017-03-07 1/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lecture 5 — C 语句 绳伟光 微纳电子学系 上海交通大学 2017-03-07 1 / 68
提纲 选择语句(Selection Statements) 。if语句 o switch语句 迭代语句 o while语句 。do语句 ●for语句 逗号运算符 跳出循环语句 空语句 2/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 提纲 1 选择语句 (Selection Statements) if 语句 switch 语句 2 迭代语句 while 语句 do 语句 for 语句 逗号运算符 跳出循环语句 空语句 2 / 68
提纲 选择语句(Selection Statements) ●if语句 ●switch语句 迭代语句 o while语句 odo语句 。for语句 。逗号运算符 。跳出循环语句 ●空语句 3/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 提纲 1 选择语句 (Selection Statements) if 语句 switch 语句 2 迭代语句 while 语句 do 语句 for 语句 逗号运算符 跳出循环语句 空语句 3 / 68
Statements 。我们已经接触过return语句和表达式语句 。余下的C语句可以分为 ●选择语句(Selection statements):if and switch 。迭代语句(Iteration statements):while,do,for ●跳转语句(Jump statements.:break,continue,goto(re- turn也在此类中) ●其它语句 ●复合语句(Compound statement) o空语句(Null statement) 4/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Statements 我们已经接触过 return 语句和表达式语句 余下的 C 语句可以分为 选择语句 (Selection statements): if and switch 迭代语句 (Iteration statements): while, do, for 跳转语句 (Jump statements): break, continue, goto (return 也在此类中) 其它语句 复合语句 (Compound statement) 空语句 (Null statement) 4 / 68
if语句 对于==(equality)和=(assignment)的混淆与误用是最常 见的C编程错误 if (i==0).../tests whether i is equal to 0 if (i=0).../assigns o to i,then tests whether the result is nonzero if (0 =n).../test the opposite condition (i is outside the range) 5/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . if 语句 对于 == (equality) 和 = (assignment) 的混淆与误用是最常 见的 C 编程错误 if (i == 0) ... / / tests whether i i s equal to 0 if (i = 0) ... / / assigns 0 to i , then tests whether the re sul t i s nonzero if (0 = n) ... / / test the opposite condition ( i i s outside the range) 5 / 68
复合语句 。前面的if条件后面只有一条语句:if(expression)state- ment ·为了使if可以控制多条语句,可以使用复合语句(compound statement) 。复合语句的形式为:{statements} ·在一系列语句外面包围花括号,使得编译器将这些语句视为 一条单一的语句 6/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 复合语句 前面的 if 条件后面只有一条语句:if ( expression ) statement 为了使 if 可以控制多条语句,可以使用复合语句 (compound statement) 复合语句的形式为:{ statements } 在一系列语句外面包围花括号,使得编译器将这些语句视为 一条单一的语句 6 / 68
复合语句示例 o line num 0;page num++; ·更常见的做法是将复合语句中的子语句放置在多行: { line num =0; page_num++; } ·花括号内的每条语句都要以分号结尾,但复合语句本身的花 括号后面不需要分号 ●完整示例: if (line num =MAX_LINES){ line num 0; page num++; C语法要求一条单一语句的地方,都可以放置复合语句! 7L6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 复合语句示例 { line_num = 0; page_num++; } 更常见的做法是将复合语句中的子语句放置在多行: { line_num = 0; page_num++; } 花括号内的每条语句都要以分号结尾,但复合语句本身的花 括号后面不需要分号 完整示例: if (line_num == MAX_LINES) { line_num = 0; page_num++; } C 语法要求一条单一语句的地方,都可以放置复合语句! 7 / 68
else子句 。if语句可能包含else分支,格式为: if expression statementl else statement2 ●statement2会在expression的值为0时执行 if (i j) max i; else max j; ·如果语句足够短,可以写成如下形式: if (i>j)max i; else max j; 8/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . else 子句 if 语句可能包含 else 分支,格式为: if ( expression ) statement1 else statement2 statement2 会在 expression 的值为 0 时执行 if (i > j) max = i; else max = j; 如果语句足够短,可以写成如下形式: if (i > j) max = i; else max = j; 8 / 68
嵌套if-else语句 if-else语句嵌套的情况也很常见,书写时同一层的if-else最好 上下对齐,内层的if-else最好向里缩进,以便程序更易读懂! if (i>j) if (i>k) max i; else max k; else if (i>k) max =j; else max k; 日y 9/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 嵌套 if-else 语句 if-else 语句嵌套的情况也很常见,书写时同一层的 if-else 最好 上下对齐,内层的 if-else 最好向里缩进,以便程序更易读懂! if (i > j) if (i > k) max = i; else max = k; else if (j > k) max = j; else max = k; 9 / 68
用{}使if-else语句更清晰 为了程序更清晰,可以加入{}将子句包围起来形成分组! if (i>j){ if (i>k) max i; else max k; }else { if (j>k) max j; else max k; } 10/68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 用 {} 使 if-else 语句更清晰 为了程序更清晰,可以加入 {} 将子句包围起来形成分组! if (i > j) { if (i > k) max = i; else max = k; } else { if (j > k) max = j; else max = k; } 10 / 68