今天五月二十号发布五月十八的,五月十九星期天,休息时间。
1. 运算符
1.1三元运算符
运算符 | 描述 | 操作数个数 | 所组成表达式的值 | 有无副作用 |
---|---|---|---|---|
?: |
三元运算符 | 3 | 操作数1成立,取操作数2作为表达式的值 操作数1不成立,取操作数3作为表达式的值 |
无 |
1.2其他运算符
运算符 | 描述 | 操作数个数 | 所组成表达式的值 | 有无副作用 |
---|---|---|---|---|
sizeof |
字节数运算符 | 1 | 操作数的字节长度(size_t类型) | 无 |
, |
逗号运算符 | 2 | 第2个操作数的值 | 无 |
其他还有*、&、.、->、等等、
1.3 运算符优先级
总体上:一元运算符> 算数运算符> 关系运算符> 逻辑运算符> 三元运算符 > 赋值运算符
注意: 可通过小括号提高优先级
2. 流程控制
2.1 分支控制语句
①单项分支
if(条件表达式){
语句1;
语句2;
...
}
②双向分支
if(条件表达式){
语句1;
语句2;
...
}else{
语句1;
语句2;
}
③多项分支
if(条件表达式){
语句1;
语句2;
...
}else if(条件表达式){
语句1;
语句2;
...
}else if(条件表达式){
语句1;
语句2;
...
}.....else{
语句1;
语句2;
}
④多项分支 switch case
switch(表达式){
case 表达式可能的值1(字面量):
语句1;
语句2;
...
break;
case 表达式可能的值1(字面量):
语句1;
语句2;
...
break;
case 表达式可能的值1(字面量):
语句1;
语句2;
...
break;
............
default:
语句1;
语句2;
......
}
注意
- switch 后面表达式的值必须是一个整形(char、short、int、long等)或枚举类型。
- case后面的值必须是字面量常量,而不是变量或其他标识符。
- default是可选的,当没有匹配的case时,执行default。
- break语句可是使程序跳出switch语句块,如果没有break,会执行下一个case语句块,直到遇到break或者执行到switch结尾,这个现象称为穿透。
⑤嵌套分支
if(){
if(){
switch(){
case:
if(){
}else{
}
}
}else{
switch(){
case:
if(){
}else{
}
}
}
2.2循环控制语句
①while循环
while(条件表达式){
循环体1;
循环体2;
...
}
- 循环条件表达式成立,就执行循环体语句,直到条件不成立,立即停止循环。
- 如果要避免死循环,循环条件表达式不能永远成立,且随着循环次数增加,应该越来越趋向于不成立。
②do while
for(循环控制变量初始化;条件表达式;循环控制变量变化){
循环体语句1;
循环体语句2;
......
}
- while:每次循环都先判断条件表达式,如果条件为真,则执行循环体中的雨具,若一开始条件就不成立则一次循环体都不会执行。
- do while: 先执行一次循环体语句,然后再判断条件表达式,如果条件为真,则执行下一次循环语句,相对于while循环,do while循环只有第一次循环的执行没有经历条件判断,以后每一次循环的执行都要经历条件判断,若一开始条件就不成立,do while循环体至少会被执行一次。
③for循环
for(循环控制变量初始化;条件表达式;循环控制变量变化){
循环体1;
循环体2;
....
}
- 循环控制变量初始化:循环之前就执行,且只执行一次。
- 条件表达式: 每次执行循环体语句前先判断,执行次数比循环次数多一次。
- 循环控制变量初始化:循环多少次就执行多少次,每次在循环体语句之后执行。