C语言-分支和循环

发布时间 2023-12-17 02:53:43作者: excellentFish

C语言中的分支与循环

C语言可以实现三种结构:顺序结构选择结构循环结构

顺序结构:即普通的运行结构,程序的执行按照代码的书写顺序,从上到下逐条执行,没有任何跳转或分支,每条语句依次执行。

选择结构:允许程序根据条件选择不同的执行路径。(if语句,switch语句)

循环结构:允许重复执行一段代码,直到满足特定的条件。(while循环,do-while循环,for循环)

运算符

运算符是构建C语言表达式和语句的基础,通过它们可以执行各种计算和逻辑操作。是后续分支、循环结构中进行判断的重要组成部分

1. 算术运算符

'+', '-', '*', '/', '%', '++', '--'
其中:
'+'\'-' 作为一元运算符时表示某一值或变量的相反数,作为二元运算符时表示加法\减法。

除法运算符'/',得到的数据类型以运算符两边的数据类型决定。两边都是整数型,得到的结果也将会是整数(3/2 == 1  而不是1.5);如有一边或者两边是浮点型,则结果会是浮点型数据。

取模'%'(求余数,只用于整数),得到的结果是整数,其正负号根据符号左边的正负号决定。

自增'++'(增加1)、自减'--'(减少1):用法一样,见下
// ++ 或者 --  可以放在整数变量的左边或者右边。
// 不涉及赋值到其他变量或判断该变量值时,例如只有 i++ 或 ++i, 就相当于 i = i + 1
// 而当涉及到赋值到其他变量或判断该变量值时,放在左边代表变量先+/-,再调用变量;放在右边表示先调用变量,再+/-。如
#include <stdio.h>
int main()
{
    int a = 0, b = 0, c = 0;
    b = a++; // 这里先将a=0赋值给b,然后a再加1,所以b=0,a=1
    printf("a=%d, b=%d\n",a,b);
    c = ++a; // 这里先给a+1,再将a=2赋值给c,所以a=2,c=2
    printf("a=%d, c=%d\n",a,c);
}

2. 关系运算符

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

注意:程序中不可把判断是否等于 如 if( i == 1) 写成赋值 如 if ( i = 1),否则会出大问题

3. 逻辑运算符

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

4. 位运算符

&   :按位与
|   :按位或
^   :按位异或
~   :按位取反
<<  :左移
>>  :右移

5. 赋值运算符

=  :基本赋值
+=、-=、*=、/=、%=  :复合赋值,例如 a += b 等价于 a = a + b
<<=、>>=、&=、^=、|=  :位运算的复合赋值

6. 条件运算符(三元运算符)

?:  :三元运算符,形式为 条件 ? 表达式1 : 表达式2。如果条件为真,则结果为表达式1,否则为表达式2。

7. 逗号运算符

,:用于分隔表达式,使它们能在一个语句中依次执行。

8. 类型运算符

sizeof:返回变量或类型的大小(以字节为单位)。
&(当用作一元运算符时):取地址运算符。
*(当用作一元运算符时):指针解引用运算符。

9. 指针运算符

->:用于访问结构体指针所指向的成员。
.:用于访问结构体的成员。

分支

C语言中的分支结构主要通过以下几种语句实现,它们允许程序根据不同的条件执行不同的代码路径:

1. if 语句:

最基本的分支结构。
如果条件为真(非零),执行if块内的语句。
语法:if (condition) { /* 代码块 */ }

2. if-else 语句:

扩展了if语句,允许在条件不满足时执行另一组语句。
语法:if (condition) { /* 代码块1 */ } else { /* 代码块2 */ }

3. if-else if-else 语句:

用于处理多个条件。
如果第一个if条件不满足,程序会检查else if的条件,依此类推。如果所有条件都不满足,则执行else块。
语法:if (condition1) { /* 代码块1 */ } else if (condition2) { /* 代码块2 */ } ... else { /* 默认代码块 */ }

4.switch 语句:

用于基于变量的值选择多个代码块之一来执行。
switch语句内部使用case标签来定义可能的值,如果变量与case标签匹配,则执行该case块。
通常与break语句一起使用,以防止执行连续的case块。
语法:switch (expression) { case value1: /* 代码块1 */ break; case value2: /* 代码块2 */ break; ... default: /* 默认代码块 */ }

循环

C语言提供了几种循环结构,用于重复执行一段代码多次。这些循环结构包括:

1. while 循环:

while 循环在每次迭代开始前检查条件。如果条件为真(非零),则执行循环体。
语法:while (condition) { /* 循环体 */ }
这是最基本的循环结构,适用于在循环开始前不知道迭代次数的情况。

2. do-while 循环:

do-while 循环**至少执行一次**循环体,然后检查条件。如果条件为真,则重复循环。
语法:do { /* 循环体 */ } while (condition);
这种循环结构适用于至少需要执行一次循环体的情况。

3.for 循环:

for 循环提供了一个初始化表达式、条件表达式和迭代表达式的综合结构。
语法:for (initialization; condition; increment) { /* 循环体 */ }
这种循环结构适用于当你知道循环需要执行的确切次数时。

4.嵌套循环:

循环结构可以嵌套使用,即在一个循环内部使用另一个循环。嵌套循环常用于处理多维数据结构,如二维数组。

5.循环控制语句:

break:立即退出当前循环,继续执行循环之后的代码。
continue:跳过当前迭代的剩余部分,立即开始下一次迭代。