选择语句
选择语句
从本章开始,笔记就不记得那么细了,理解为主
后面的重要章节会认真学习
关系运算符优先级低于算术运算符,左结合
判等运算符优先级低于关系运算符
&&和||具有短路特性
i > 0 && ++j > 0 中 j不一定自增
条件运算符
唯一一个三位运算符
expression1 ? expression2 : expression3
如果表达式1成立,则表达式2,否则表达式3
k = (i >= 0 ? i : 0) + j; // ()很有必要
C99中的布尔值
_Bool flag;
flag = 5;	// flag = 1
_Bool是无符号整型,只能赋值为0或1.
赋值非零数值,都会变为1
头文件<stdbool.h>
提供了bool宏,用来代表_Bool
bool flag;	/* same as _Bool flag */
还提供了true和false两个宏,代表1和0
flag = true;
flag = false;
后续使用布尔变量时都用到了这个头
switch语句
用于很多种情况判定
switch(表达式) {
    case 常量表达式 : 语句
    ...
    default : 语句
}
- 
控制表达式。整型表达式,可以对字符进行判定,因为C语言把字符当做整型处理 
- 
分支标号。 case 常量表达式 : 
- 
常量表达式。不能包含变量和函数调用,但可以包括宏。表达式的值必须为整数 
- 
语句。每个分支标号后面跟任意数量的语句,且不要花括号,最后加break语句 
分支顺序没有要求,default不一定放在最后
不一定有default分支,如果都不匹配,控制直接传给switch后面的语句
多个分支标号可以放在同一组语句前面
不加break,控制从一个分支继续流向下一个分支,所以最好注释/* FALL THROUGH */
最后一个分支不需要break语句,放break是防止增加分支数目时出现“丢失break”的问题
Q&A
if ((i == j))
通过加圆括号的方式来禁用该警告
坚持使用某种风格比选择适当的风格更重要
问:i 为 int型变量,f为float变量,(i > 0 ? i : f)是哪种类型的值
答:当int型和float型混合在一个条件表达式中,表达式的类型为float,i会转换为float
问:_Bool为什么不会影响现有程序
答:C89标准指出,下划线开头,后跟大写字母的名字是保留字,程序员不该使用
课后题:
编写一个表达式,要求这个表达式根据i小于、等于或大于j,分别取值-1.0.1
(i > j) - (i < j)
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号