第三章
特别要注意:
C语言中是用非0表示逻辑为真,用0表示逻辑为假。
C语言有构造类型,没有逻辑类型。
关系运算符号:注意<=的写法,==和=的区别!(考试重点)
if只管后面一个语句,要管多个,请用大括号!
1)关系表达式:
a.表达式的数值只能为1(真),或0(假)。
如9>8为真,所以此表达式的数值就是1。
如7<6为假,所以此表达式的数值就是0。
b.考试最容易错的:
int x=1,y=0,z=2;
x<y<z;//是真是假
真。因为1<0为假,得到表达式数值为0,此时表达式就变成了0<2,那么运算结果就是1,为真!
c.等号和赋值的区别!一定要记住“=”就是赋值,“==”才是等号。
2)逻辑表达式:
核心:表达式的数值只能为1(真),或0(假)。
a.共有&& || !三种逻辑运算符号。
b.优先级:!> &&> ||
c.注意短路现象,考试比较喜欢考到,详见书上例子。
d.表示x小于0大于10的方法。
0<x<10是不行的。因为是先计算0<x得到的结果为1或0;再用1或0与10比较,得到的总是1(真)。所以一定要用(0<x)&&(x<10)表示比0大比10小。
3)if语句:
a.else是与最接近的if且没有else的语句匹配。
b.交换的程序写法:
t=x;
x=y;
y=t;
c.if只管后面一个语句,要管多个,请用大括号!(常考)
if(a<b) t=a;a=b;b=t;//只管t=a
if(a<b) {
t=a;a=b;b=t;
}//管大括号内的所有语句
d.
if(a<b) t=a;//单独的if语句
if(a<b) min=a;
else min=b;//标准的if语句
if(a<b)
if(b>c) printf("ok!");//嵌套的if语句
if(a==t) printf("a");
else if(b==t) printf("b");
else if(c==t) printf("c");
else printf("d");//多选一的if语句
经典考题:结合上面四种if语句题型做题
int a=1,b=0;
if(!a) b++;//不执行(假)
else if(a==0)//不执行(假)
if(a) b+=2;//else if的嵌套if语句,不执行(假)
else b+=3;//if和else if语句没有一个正确的,就执行else的语句!
4)条件表达式:
表达式1 ? 表达式2 : 表达式3
a.考试口诀:真前假后。(即表达式1的数值为非0时,采用表达式2;表达式1的数值为0时,采用表达式3)
b.求k:
int a=1,b=2,c=3,d=4,e=5;
k=a>b?c:d>e?d:e;//k=5
5)switch语句:
a.执行的流程一定要弄懂!
b.注意有break和没有break的差别,书上的两个例子,没有break的时候,只要有一个case匹配了,剩下的都要执行;有break则是直接跳出switch语句。
c.switch只可以和break一起用,不可以和continue用。
d.
switch(x) x://x是整型常量,字符型常量,枚举型数据。
{
case 1:...//不可以是变量。
case 2:...
}
e.switch是必考题型。