C语言分支语句

本文详细解析了编程中的if语句和switch语句,包括它们的结构、关系表达式的概念以及如何使用关系运算符。还介绍了case、常量、break和default的关键概念,强调了在多分支选择中的应用和break的重要性。
摘要由CSDN通过智能技术生成

目录

1.单分支语句 if

2.多分支语句 switch 

一、if语句

//第一种//
if(关系表达式)
{
  语句体;
}
//第二种//
if(关系表达式)
{
  语句体1;
}
else
{
 语句体2;
}
执行条件:

  if语句是否执行取决于“括号”中的关系表达式是否为真,如果为真则执行if语句的语句体,如果为假则不执行,或者执行else语句体。

关系表达式:

  既然括号中关系表达式的真假决定if语句的执行问题,那么关系表达式我们到底可以怎么去填写呢?

1、首先我们要了解什么是关系表达式:

  关系表达式通常是指在计算机程序中,使用关系运算符连接两个表达式所形成的式子。这些表达式的值是逻辑值,通常是“真”或“假”。在编程语言中,关系表达式的求值结果通常用非零(代表“真”)或零(代表“假”)来表示。例如,如果关系表达式成立,则表达式的值为1(代表“真”),否则表达式的值为0(代表“假”)。

2、那问题又来了,什么是关系运算符:

关系运算符包括大于、大于等于、小于、小于等于、等于和不等于。

  因此我们不难发现,a>b,就是一个由关系运算符连接而成的关系表达式,如果a真的大于b那么这个表达式值为1(即非零)则为真,反之值为0则为假。现在有了真假就可以对if语句进行判别与执行。

特殊书写格式:

如果if/else后面不接“大括号”——“{}”,则它们分别只能控制离自己最近的一条语句。

if(a>b)
printf("a>b\n");
else
printf("a<=b\n");
if(a>b)
{
  printf("a>b\n");
}
else
{
  printf("a<=b\n");
}

  这两种写法是等价的,执行结果没有区别。

二、switch语句

switch(表达式){ 
	    case 常量表达式1:  语句1;
	    case 常量表达式2:  语句2,break;
	    …… 
	    case 常量表达式n:  语句n;
	    default:  语句n+1;
	}

  switch语句是一种多分支选择语句。它与if的不同在于:if语句的选择只有两个分支(即满足或不满足、非A即B),switch语句则具备多种选择,可能是A\B\C\D.......或者意外情况(default),因此对于可能出现多种选择的情况下,switch应用性更加强大。接下来,我们逐步来了解这几个概念:case、常量、常量表达式、break、default

case

  “case”我们在这只用将其理解为“情况”的意思,case 1(即switch中表达式为1的情况),case在这做类似引导词的作用。不必过度深究。

常量

  常量是指在程序运行过程中其值保持不变的数据。常量的类型主要包括以下几种:

  数值型常量。数值型常量可以是整数(包括正整数、负整数和零),也可以是实数(即浮点数)。整型常量可以使用十进制、八进制或十六进制表示,其中八进制数和十六进制数以0和0x开头。实型常量通常带有小数点,可以表示为传统的小数形式或指数形式。

  字符型常量。字符型常量是用单引号括起来的单个字符。

  字符串常量。字符串常量是用双引号括起来的字符序列。

  布尔型常量。布尔型常量仅有两个值:true(真)和false(假)。

  空常量(null常量)。空常量代表没有任何数据

常量表达式

  常量表达式是指表达式中只包含常量的式子。例如,1+2就是一个常量表达式。如果定义了a为常量1,那么a+2也是常量表达式。需要注意的是,如果a被定义为变量,那么a+2就不是常量表达式了。

break

  break的作用是“跳出此switch语句”

eg:

int a=1;
switch(a){ 
	    case 1:  a++;
	    case 2:  a++,break;
        case 3:  a++;
	    …… 
	    case n:  a++;
	    default:  a++;
	}
printf("%d",a);

  此时,a的数值为1,因此进入case 1,执行语句“a++”,此时a的数值为2,但是由于程序仍然在switch语句之中并没有跳出,所以走到了case 2,执行语句“a++”,此时a数值为3,然后遇到了break,跳出了switch语句,执行打印语句:printf("%d",a)。这个时候打印出来的a的数值就是3。      有对比才能凸显出作用,如果没有break语句,因为a初始值为1,就会从case1,进入一直执行到default,a自加n+1次。如此来看,break的作用就显而易见了。

default

还是以此为例:

int a=0;
scanf("%d",&a);
switch(a){ 
	    case 1:  a++;
	    case 2:  a++,break;
        case 3:  a++;
	    default:  printf("您输入错误了!\n");
	}
printf("%d",a);

  我们现在明知case只有1、2、3这三种情况,那如果我非要让a的初始值不是1、2、3任何一个数呢?

  实际上在这种情况下,switch语句是不会做出反应的,但是一个好的程序不仅仅要能对合法数据进行相关操作,也要能对非法数据作出回应,这个时候default就发挥作用了,当你输入数据不符合任何一个case时,就执行default的语句体,进行反馈。

  default与case的位置可以在switch中随意放置,切记case不会在执行后跳出switch,default同样不会,都有需要与break配合使用!!!

谢谢!希望我们KT进步~

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值