IF-ELSE语句
1.else就近原则——else语句只和最近的if匹配。
2.if语句后面如果不跟{},只在满足条件下执行一条;语句。else同理。
3.C语言中,0为假,非0为真,适用任何需要判断的语句。(包括if-else,while等)
4.短路问题——&&:如果左边的表达式为假,右边的表达式跳过判定;||:如果左边表达式为真,右边表达式跳过判定。
例子:
int i = 0,a=0,b=2,c =3,d=4;
i = a++ && ++b && d++; //结果为:a = 1,b = 2,c = 3,d = 4, i = 0。由于a++先执行程序,再进行自增。a为0判定为假,第一个&&左边为假,i=0;&&右边语句均不再执行。bd不发生任何改变。
i = a++||++b||d++; //结果为:a = 1,b = 3,d = 4 ,c = 3,i = 1。第一个||左边语句a++判定为假,执行||右边语句语句,b++,先自增再判定,b为3,非0为真,第二个||右边语句不判定,因为第二个||语句左边为真,d不变,i=1.
SWITCH语句
5.switch语句中的判断式必须为整型不能是浮点数(char也算整型)。
6.switch语句中每个case后面最好跟着一个break,用于跳出switch循环。
如果case不跟break,会自动进入满足条件的case然后执行后续其他case语句,直到碰到break时停止。在此条件下,如果default在case前不执行(见图1),在case后则执行(见图2)。
如果不满足任何case,且没有break语句,优先执行default语句(如图3);如果default后面没有break,继续执行后续语句,后续中有case语句也会执行(如图4)。
7.default位置随意,也需要跟一个break。通常放在最后。
8.switch用于多分支,if用于1-2分支。(个人见解)
DO-WHILE和WHILE
9.do-while,先执行{}中语句再进行判定;while先判定再执行{}中语句;使用环境分情况讨论。
WHILE和FOR
10.while和for循环对比,for循环:初始、判定、调整三个语句代码集中,便于浏览,while过于分散。
11.碰见continue,跳过本次循环中continue后续代码,继续循环,类似重新进入循环体;
碰见break,直接终止该循环体。
GOTO语句
12.goto语句——直接跳到想要执行的语句位置。
条件操作符
13. exp ? exp1 : exp2
判断EXP,如果为真执行EXP1,结果为执行EXP1语句的结果;如果为假执行EXP2,结果为EXP2语句的结果。
例子:
m = a > b ? a : b; //判断a>b,如果为真,m = a;为假,m = b。