Skip to content

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{
     /* 如果布尔表达式为假将执行的语句 */
}

扩展

  1. C 语言中的三元运算符可以简化条件判断语句。(上文提过)
c
condition ? expression1 : expression2;
/* int max = (a > b) ? a : b; */
  1. 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 循环的控制流程:

  1. init:声明并初始化循环控制变量,首先执行。
  2. condition:判断条件表达式。如果为真,执行循环体;否则,跳出循环。
  3. increment:执行增量语句,更新循环控制变量。
  4. 重复步骤 2,直到条件表达式为假,循环终止。

4.6 break 和 continue 语句

提示

break 和 continue 遵循就近原则🤔

C 语言中 break 语句有以下两种用法:

  1. break 语句出现在一个循环内时,会跳出控制流。
  2. 用于终止 switch 语句中的一个 case 语句。
c
break;

continue 会跳过本次循环中的代码,开始下一次循环。

对于 for 循环,continue 语句执行后自增语句仍然会执行。

对于 whiledo...while 循环,continue 语句重新执行条件判断语句。

c
continue;

写在最后

“逻辑代码” 是编程语言的基础中的基础。😮

没有“逻辑”的代码,也缺失了解决问题的关键能力。

如有转载或 CV 请标注本站原文地址