第7章 C控制语句:分支和跳转
本章介绍以下内容:
关键字:if、else、switch、continue、break、case、default、goto
运算符:&&、||、?:
函数:getchar()、putchar()、ctype.h系列
如何使用if和if else语句,如何嵌套它们
在更复杂的测试表达式中用逻辑运算符组合关系表达式
C的条件运算符
switch语句
break、continue和goto语句
使用C的字符I/O函数:getchar()和putchar()
ctype.h头文件提供的字符分析函数系列。
7.1 if语句
7.2 if else 语句
7.2.1 另一个示例:介绍getchar()和putchar()
// cypher1.c -- 更改输入,空格不变
#include <stdio.h>
#define SPACE ' ' // SPACE表示单引号-空格-单引号
int main(void)
{
char ch;
ch = getchar(); // 读取一个字符
while (ch != '\n') // 当一行未结束时
{
if (ch == SPACE) // 留下空格
putchar(ch); // 该字符不变
else
putchar(ch + 1); // 改变其他字符
ch = getchar(); // 获取下一个字符
}
putchar(ch); // 打印换行符
return 0;
}
C特有的编程风格----把两个行为合并成一个表达式
!=运算符的优先级比=高
7.2.2 ctype.h系列的字符函数
while ((ch = getchar()) != '\n')
//这一句的注意,!=的优先级很高,所以需要增加()
7.2.3多重选择else if
7.2.4 else与if配对----就近配对
7.2.5 多层嵌套的if语句
注;stdbool.h头文件设定新的BOOL别名
for (div = 2, isPrime = true; (div * div) <= num; div++)//设定素数
小结
小结:用if语句进行选择
关键字:if、else
一般注解:
下面各形式中,statement可以是一条简单语句或复合语句。表达式为真说明其值是非零值。
形式1:
if (expression)
statement
如果expression为真,则执行statement部分。
形式2:
if (expression)
statement1
else
statement2
如果expression为真,执行statement1部分;否则,执行statement2部分。
形式3:
if (expression1)
statement1
else if (expression2)
statement2
else
statement3
如果expression1为真,执行statement1部分;如果expression2为真,执行statement2部分;否则,执行statement3部分。
7.3 逻辑运算符
注:与&&,或||,非!
C99标准新增了可代替逻辑运算符的拼写,它们被定义在ios646.h头文件中,可以使用and,or,not
#include <ios646.h>
if (ch != '"' and ch != '\'')
charcount++;
7.3.2 优先级
7.3.3 求值顺序
小结:逻辑运算符和表达式
逻辑运算符:
逻辑运算符的运算对象通常是关系表达式。!运算符只需要一个运算对象,其他两个逻辑运算符都需要两个运算对象,左侧一个,右侧一个。
逻辑表达式:
当且仅当expression1和expression2都为真,expression1 && expression2才为真。如果 expression1 或 expression2 为真,expression1 || expression2 为真。如果expression为假,!expression则为真,反之亦然。
求值顺序:
逻辑表达式的求值顺序是从左往右。一旦发现有使整个表达式为假的因素,立即停止求值。
示例:
6 > 2 && 3 == 3 真
!(6 > 2 && 3 == 3) 假
x != 0 && (20 / x) < 5 只有当x不等于0时,才会对第2个表达式求值
7.4 一个统计单词的程序
该程序要逐个字符读取输入,知道何时停止读取。然后,该程序能识别并计算这些内容:字符、行数和单词。
7.5 条件运算符:?:
小结:条件运算符
条件运算符:?:
一般注解:
条件运算符需要3个运算对象,每个运算对象都是一个表达式。其通用形式如下:
expression1 ? expression2 : expression3
如果expression1为真,整个条件表达式的值是expression2的值;否则,是expression3的值。