C语言|第七章学习记录
C语言|第七章学习记录
Zehua- if语句:用于根据条件执行不同的分支。其一般形式为:
if (expression) |
如果expression
为真(非0),则执行statement
;否则,跳过statement
。
- if else语句:用于在两个分支中选择一个执行。其一般形式为:
if (expression) |
如果expression
为真(非0),则执行statement1
;如果expression
为假(0),则执行statement2
。
- else if语句:用于实现多重选择。其一般形式为:
if (expression1) |
如果expression1
为真,执行statement1
;如果expression2
为真,执行statement2
;否则,执行statement3
。
else与if的配对:如果没有花括号,else与离它最近的if匹配,除非最近的if被花括号括起来。
getchar()函数:用于从输入队列中读取一个字符,并返回其ASCII码值。例如:
ch = getchar(); |
将读取下一个字符输入,并把该字符的ASCII码值赋给变量ch。
- putchar()函数:用于打印一个字符到屏幕上。例如:
putchar(ch); |
将把变量ch的值作为字符打印出来。
这些函数只处理字符且不需要转换说明。
- ctype.h头文件:提供了一些字符映射函数,用于判断和转换字符的类型。例如:
tolower(ch); // 返回ch对应的小写字母,不改变ch的值 |
逻辑运算符:用于连接和操作布尔表达式,有以下三种:
&&
:逻辑与,当两个操作数都为真时,结果为真;否则为假。||
:逻辑或,当两个操作数中有一个为真时,结果为真;否则为假。!
:逻辑非,当操作数为假时,结果为真;当操作数为真时,结果为假。
例如:
exp1 && exp2 // 如果exp1和exp2都为真,则结果为真;否则为假 |
- iso646.h头文件:提供了一些逻辑运算符的别名,可以用来替代上述三种运算符。例如:
and // 等价于 && |
逻辑运算符的优先级:不同的逻辑运算符有不同的优先级,高优先级的运算符先被计算。一般来说:
!
运算符的优先级最高,比乘法运算符还高,与递增运算符相同,只比圆括号低。&&
运算符的优先级比||
运算符高,但是两者的优先级都比关系运算符低,比赋值运算符高。
逻辑运算符的求值顺序:C语言保证逻辑表达式的求值顺序是从左往右。
&&
和||
运算符都是序列点,所以在从一个操作数执行到下一个操作数之前,所有的副作用都会生效。而且,C语言保证一旦发现某个操作数让整个表达式无效,便立即停止求值。例如:
if (range >= 90 && range <= 100) // 如果range小于90,就不会再判断range是否大于100 |
&&运算符可用于测试范围。例如:
if (range >= 90 && range <= 100) |
- 条件表达式:用于根据条件返回不同的值,相当于一种简化的if else语句。该表达式使用
?:
条件运算符。其一般形式为:
expression1 ? expression2 : expression3 |
如果expression1
为真(非0),那么整个条件表达式的值与expression2
的值相同;如果expression1
为假(0),那么整个条件表达式的值与expression3
的值相同。
跳转语句:用于改变程序的执行流程,有以下几种:
continue
语句:用于跳过当前循环的剩余部分,并开始下一次循环。可以用于while, do while, for三种循环中。如果在嵌套循环中使用,只会影响包含该语句的内层循环。此外,continue只能用于循环中。尽管如此,如果switch语句在一个循环中,continue便可作为switch语句的一部分。这种情况下,就像在其他循环中一样,continue让程序跳出循环的剩余部分,包括switch语句的其他部分。
continue还可用作占位符。例如,下面的循环读取并丢弃输入的数据,直至读到行末尾,例如:
while (getchar() != '\n') |
当程序已经读取一行中的某些内容,要跳至下一行开始处时,这种用法
很方便。问题是,一般很难注意到一个单独的分号。如果使用continue,可
读性会更高:
while (getchar() != '\n') |
对于for循环,执行continue后的下一个行为是对更新表达式求值,然后是对循环测试表达式求值。
break
语句:用于终止当前循环或switch语句,并继续执行下一条语句。例如:while (1)
{
ch = getchar();
if (ch == 'q')
break; // 如果输入q,退出循环
putchar(ch);
}switch语句:程序根据expression的值跳转至相应的case标签处。然后,执行剩下的所有语句,除非执行到break语句进行重定向。expression和case标签都必须是整数值(包括char类型),标签必须是常量或完全由常量组成的表达式。如果没有case标签与expression的值匹配,控制则转至标有default的语句(如果有的话);否则,将转至执行紧跟在switch语句后面的语句。形式:
switch ( expression ) |