外观
C 语言入门(四)
前言
今天来学点“逻辑”🧐
四、控制语句
4.1 if 语句
提示
C 语言把任何 非零 和 非空 的值假定为 true,把 零 或 null 假定为 false。
但是哈!🤔上面说的不严谨,C 语言在 C99 标准以前并没有布尔类型,而是以0、1代替。
如果 if 语句后的布尔表达式为 true,则执行 if 语句内的代码块。
c
if(a==1)
{
/* 如果布尔表达式为真将执行的语句 */
}
如果 if 语句后布尔表达式为 false,则执行 else 块内的代码。
else 默认为表达式不为真的情况。
c
if(a==1)
{
/* 如果布尔表达式为真将执行的语句 */
}
else
{
/* 如果布尔表达式为假将执行的语句 */
}
else if 语句在布尔表达式为真时执行。
提示
只有 else if 后才可以加表达式,else 后则不可以,它默认为以上表达式的不为真的情况。
c
if(a==1){
/* 如果布尔表达式为真将执行的语句 */
}
else if(a==2){
/* 如果布尔表达式为真将执行的语句 */
}
else{
/* 如果布尔表达式为假将执行的语句 */
}
扩展
- C 语言中的三元运算符可以简化条件判断语句。(上文提过)
c
condition ? expression1 : expression2;
/* int max = (a > b) ? a : b; */
- C 语言中的 goto 语句用于无条件跳转。
c
label:
/* 其他代码 */
goto label;
了解即可,一般不用,这种代码被很多人诟病。😐
4.2 switch 语句
switch 语句被用来实现多分支结构,每个值称为一个 case,case 后的值与 number 匹配时,以运行 case 后的代码块。
c
int number;
switch (number) {
case 1:
printf(" 1");
break;
case 2:
printf("2");
break;
default:
printf("3");
break;
}
switch 语句遵循以下规则:
- switch 语句中的表达式是一个常量表达式,必须是一个整型或枚举类型。
- 可以有任意数量的 case 语句,但代码块应该跟有 break 跳出分支。
- default 执行其他 case 都不为真时的代码。default 中的 break 语句不是必需的。
4.3 while 循环
while 循环语句在表达式为 true 时会重复执行代码块,否则不执行。
一般与if分支语句搭配使用,可解决大部分逻辑问题。😋
c
while(1)
{
/* 重复执行的语句 */
}
4.4 do-while 循环
do...while 循环与 while 循环类似,但是 do...while 循环会先执行一次代码块,再进行表达式判断。
c
do
{
/* 重复执行的语句 */
}while(1);
4.5 for 循环
for 循环可以执行指定次数的循环控制结构。
c
for ( init; condition; increment ) {
/* 重复执行的语句 */
}
/*等价于*/
init;
while(condition)
{
/* 重复执行的语句 */
increment;
}
for 循环的控制流程:
- init:声明并初始化循环控制变量,首先执行。
- condition:判断条件表达式。如果为真,执行循环体;否则,跳出循环。
- increment:执行增量语句,更新循环控制变量。
- 重复步骤 2,直到条件表达式为假,循环终止。
4.6 break 和 continue 语句
提示
break 和 continue 遵循就近原则🤔
C 语言中 break 语句有以下两种用法:
- 当 break 语句出现在一个循环内时,会跳出控制流。
- 用于终止 switch 语句中的一个 case 语句。
c
break;
continue 会跳过本次循环中的代码,开始下一次循环。
对于 for 循环,continue 语句执行后自增语句仍然会执行。
对于 while 和 do...while 循环,continue 语句重新执行条件判断语句。
c
continue;
写在最后
“逻辑代码” 是编程语言的基础中的基础。😮
没有“逻辑”的代码,也缺失了解决问题的关键能力。