C语言分支循环语句

C语言是结构化的程序设计语言,支持顺序、选择、循环三种结构。顺序结构就是程序从开始到结束,下面来介绍一下用于实现分支和循环的语句。

 分支语句

一:if语句

1:语法形式

if(表达式)

     语句1;

else

     语句2;

2:用法:

 先判断括号中的表达式,若成立(为真)则执行语句1,否则(为假)执行语句2。在C语言中0表示假,非零值表示真,表达式成立则表达式的值为真。 默认情况下if和else的后面只能跟一条语句,如果要写多条语句就要在{ }里面进行。在写代码的时候也可以不写else语句,此外if语句中也可以嵌套if语句实现多重选择。如果有多个if和else,else总是跟其最接近的if进行匹配。

二:switch语句

1:语法形式

switch (表达式)

{

     case 整型常量表达式1: 语句1;

     case 整型常量表达式2: 语句2;

.......

     case 整型常量表达式n: 语句n;

     default: 语句n+1;

}

2:用法

根据括号中表达式的不同值,执行与其相对应的case分支(表达式的值与case后面表达式的值相同则执行),若找不到则执行default分支。case后的语句可以有多个且不用{ },default和case没有顺序要求,但通常将default放在最后,default分支也可不写。switch后面的表达式必须是整型表达式,case后面的值必须是整型常量表达式(字符类型是归类到整型类型中的,因为字符的本质ASCII码值是整数)。switch语句不会在执行了相对应的语句后跳出来,而是继续执行该语句后面的语句。要跳出switch语句则要在每一个case语句的后面加上一条break语句。

  循环语句

一:while循环

1:语法形式

while (表达式)

    语句;

2:用法

判断表达式的值,若表达式为真则语句执行。while循环要写多条语句也要在{ }中进行。

二:for循环

1:语法形式

for (表达式1; 表达式2; 表达式3)

      语句;

2:用法

表达式1用于循环变量的初始化(只执行一次)、表达式2用于循环结束条件的判断、表达式3用于循环变量的调整。执行流程为先执行表达式1,然后判断表达式2,若为真则执行语句,之后执行表达式3,然后再判断表达式2,若满足条件则继续执行语句,否则跳出循环。for循环要想执行多条语句也要放在{ }里面。

三:do - while循环

1:语法形式

do

   语句;

while (表达式);

2:用法

先直接进入循环体执行循环语句,若想写多条语句也要加{ },然后再判断表达式,表达式的值为真则继续执行循环体,表达式为假则不在执行。

需要注意的是do - while循环的最后面要加一个分号;

四:循环的嵌套

while循环、do - while循环、for循环这三种循环之间可以嵌套使用,这样能更好的解决问题。

break和continue语句

一:break语句

break的作用是永久的终止循环,在循环语句中想要循环在某中条件下终止就可以使用break语句来完成。

二:continue语句

continue的作用是跳过本次循环中continue后面的代码,继续进行下一次循环。

goto语句

C语言提供了一种非常特殊的语言,就是goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。如:

#include <stdio.h>
int main()
{
  printf("aaa\n");
  goto next;
  printf("bbb\n");
 next:
  printf("ccc\n");
  return 0;

}

该代码执行到goto语句时会跳到设置好的标号next处,从而执行next之后的代码,即会跳过代码printf("bbb\n");

goto语句使用不当会打乱程序的执行流程,但是在多层循环的代码中想快速跳出用goto语句就很方便了。

表达式的判断问题

到这里我们知道分支语句和循环语句的执行都要先判断表达式的值,只有表达式为真才能执行语句。所以这里介绍两种操作符。

关系操作符

C语言中用于比较的表达式称为关系表达式,而关系表达式中使用的运算符(操作符也叫运算符)就是关系运算符。主要有以下6种:

>   大于运算符

>= 大于等于运算符

<   小于运算符

<= 小于等于运算符

== 相等运算符(一个等号是赋值操作符)

!=   不相等运算符

C语言中0表示假、非零值表示真。而关系表达式通常返回0或1来表示真假。关系运算符是从左到右进行计算的。

逻辑操作符

逻辑操作符主要有&&,||,!三种,提供逻辑判断功能(注:逻辑运算符的结果为真用1来表示)。

&& 与运算符,相当于并且,是一个双目操作符(即有两个操作数的操作符)。用法:a && b,&&两边的表达式都为真则为真,否则为假。

||    或运算符,相当于或者,也是一个双目操作符。用法:a || b,||两边的表达式只要有一个是真则整个表达式就是真。

!     逻辑取反运算符,是一个单目操作符。用法:改变单个表达式的真假。

短路:

C语言逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右侧的表达式求值。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值,这种情况就是短路。

下面来看这样一个代码:

#include <stdio.h>

int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	printf(" i = %d \n a = %d\n b = %d\n c = %d\n d = %d\n", i, a, b, c, d);
	return 0;
}

代码分析:a等于0,a++就等于1,但a++为前置++,其使用的规则是先使用、后++,即a++的值是0,所以a++ && ++b这个表达式整体的值是0,所以右侧的表达式++b不执行,然后整个表达式就变成了0 && d++,因为左侧为0,所以整个表达式的也是0,而且右侧表达式d++也不会执行,最后整个表达式的值就是0,赋给变量i之后i的值就是0。

运行结果:

同理可以分析一下逻辑运算符||

#include <stdio.h>

int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ || ++b || d++;
	printf(" i = %d \n a = %d\n b = %d\n c = %d\n d = %d\n", i, a, b, c, d);
	return 0;
}

和前面一样a++的值是0,然后a自增1,因为是或运算符,还要看右侧的表达式++b的值,而该表达式是后置++,其使用规则是先++,后使用,即++b的值就等于b的值,所以表达式a++ || ++b整体的值是1,为真了,则整个表达式就变成了1 || d++,因为该表达式整体已经确定为真了,就是1,所以右侧的表达式d++就不执行了,变量d的值还是4,最后将整个表达式的值赋值给变量i之后i的值就是1。

运行结果:

        

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值