分支循环

C语言中,分支逻辑可以用ifswitch语句表达,循环逻辑则可以使用forwhiledo...while表达。除此之外,goto语句则可以灵活的跳转到任意代码位置。

if语句

关系运算符

关系运算符用于判断关系,返回结果位01,表示假和真。运算符的两个操作数应该是相同类型或可以进行隐式转换的,两个字符串不能进行比较。

  • == 等于
  • != 不等于
  • > 大于
  • < 小于
  • >= 大于或等于
  • <= 小于或等于

分支逻辑

下面是一个分支逻辑代码示例。

#include <stdio.h>

int main(void)
{
    int i = 0;
    if(i == 0)
    {
        printf("i == 0\n");
    }
    else
    {
        printf("i != 0\n");
    }
    return 0;
}

if...else...可以嵌套,可以写成if...else if...else if...else...组成复杂的逻辑。

与或非

C语言中,可以用“与或非”连接布尔值的表达式,返回最终的逻辑运算结果。

  • && 逻辑与
  • || 逻辑或
  • ! 逻辑非

switch语句

switch语句例子如下。

#include <stdio.h>

int main(void)
{
    int i;
    scanf("%d", &i);
    switch (i)
    {
        case 1:
            printf("Running mode 1\n");
            break;
        case 2:
            printf("Running mode 2\n");
            break;
        default:
            printf("Unkown mode\n");
    }
    return 0;
}

switch语句和if...else if...else if...else...等价。但要注意每个case都包含break,如果没有break代码流程将进入下一个case

while语句

while循环例子如下。

int factorial(int n)
{
    int result = 1;
    while (n > 0)
    {
        result = result * n;
        n = n - 1;
    }
    return result;
}

while语句括号中的表达式为非0时,循环体执行;为0时,循环终止。

do...while...语句

do...while...语句和while等价,区别是先执行,后判断条件,循环逻辑中有些时候使用do...while...代码更简洁。

for语句

for循环例子如下。

int factorial(int n)
{
    int result = 1;
    for(int i = 1; i <= n; i++)
        result = result * i;
    return result;
}

for循环中可以使用一个变量,每次循环自增、自减或是进行一些其它运算,直到不满足条件为止。

break和continue

breakcontinue用于跳出循环语句的循环体。break直接跳出一层循环,continue则是结束本次循环,继续执行下一次循环。

goto语句

goto语句一般用于跳出多层循环。虽然goto能随意跳转代码,但是一般不会这样使用,因为随意跳转会降低代码的可维护性和可读性。goto语句跳出多层循环例子如下。

#include <stdio.h>
#include <string.h>

int main(void)
{
    int mat[10][10];
    memset(mat, 0, sizeof(mat));
    mat[2][3] = 3;
    int i = 0;
    int j = 0;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            if (mat[i][j] != 0)
            {
                goto found_num;
            }
        }
    }
    found_num:
    printf("%d %d", i, j);
    return 0;
}
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。