C语言:4.选择结构

目录

条件的表示

·关系运算

关系表达式的结果:

优先级和结合性:

C语言中运算符的优先级从高到低的顺序:

·逻辑运算

·短路求值

if语句

条件表达式

switch语句


条件的表示

·关系运算

关系运算符实现两个操作数的大小比较,关系运算符也称比较运算符。用关系运算符将两个操作数连接起来的式子叫关系表达式。

关系表达式的结果:

关系成立,运算结果为“1”,具有逻辑值“真”。

关系不成立,运算结果为“0”,具有逻辑值“假”。

优先级和结合性:

C语言中有6个关系运算符,它们的优先级相同,都是从左到右结合。

下面是这些运算符及其优先级的列表:

运算符        描述                                                                      优先级    结合性
==               判断两个操作数是否相等                                        7           左结合
!=                判断两个操作数是否不相等                                     7          左结合
>                 判断左侧操作数是否大于右侧操作数                      6           左结合
<                 判断左侧操作数是否小于右侧操作数                      6           左结合
>=               判断左侧操作数是否大于或等于右侧操作数           6           左结合
<=               判断左侧操作数是否小于或等于右侧操作数           6           左结合

注:相等运算符"=="和不等运算符"!="都具有相同的优先级。当多个关系运算符出现在一个表达式中时,需要根据运算符的优先级来确定它们的顺序。如果表达式中的操作符具有相同的优先级,则按照它们出现的顺序计算。

C语言中运算符的优先级从高到低的顺序:

优先级运算符结合性
1()(函数调用)从左到右
2[](数组下标)从左到右
->(结构体指针成员)
.(结构体成员)
3++(自增运算符)从右到左
--(自减运算符)
+(正号)
-(负号)
!(逻辑非)从右到左
~(按位取反)
&(取地址)
*(间接寻址)
sizeof(大小)
(类型)(类型转换)
4*(乘法)从左到右
/(除法)
%(取模)
5+(加法)从左到右
-(减法)
6<<(左移)从左到右
>>(右移)
7<(小于)从左到右
<=(小于等于)
>(大于)
>=(大于等于)
8==(等于)从左到右
!=(不等于)
9&(按位与)从左到右
10^(按位异或)从左到右
11|(按位或)从左到右
12&&(逻辑与)从左到右
13||(逻辑或)从左到右
14?:(条件运算符)从右到左
15=(赋值)从右到左
+=(加后赋值)
-=(减后赋值)
*=(乘后赋值)
/=(除后赋值)
%=(取模后赋值)
<<=(左移后赋值)
>>=(右移后赋值)
&=(按位与后赋值)
^=(按位异或后赋值)
|=(按位或后赋值)
16,(逗号)

从左到右

·逻辑运算

C语言提供三种逻辑运算符:逻辑非(!),逻辑与(&&),逻辑或(||)

逻辑表达式:用逻辑运算符将操作数连接起来的式子。逻辑运算符的优先级和结合性见上图。

·短路求值

定义:指在逻辑运算符 && 和 || 中,当左侧条件已经能够确定表达式的结果时,就不会再去判断右侧的条件。

例如:在一个表达式 a && b 中,如果 a 为假,那么整个表达式的值一定为假,此时就不会再去判断 b 的值。同样地,在一个表达式 a || b 中,如果 a 为真,那么整个表达式的值一定为真,此时也不会再去判断 b 的值。

if语句

定义:根据给定条件是否成立来决定是否执行指定操作的语句

· 单边if:一个选项的if语句,为单分支结构

一般形式:

if(表达式)

语句

·双边if—else:有两个选项的if语句,为双分支结构

一般形式:

if(表达式)

    语句1

else

     语句2

·if—else嵌套:一个完整的控制结构,如if—else语句结构可以当作一条语句看待。若if语句中语句1又为if语句则为嵌套。(套娃)

一般形式:

if(表达式1)

     if(表达式2)

           语句1

     else

           语句2
else

     if(表达式3)

           语句3

     else

           语句4

·if语句级联:指在同一个if语句中使用多个条件语句。为多分支结构

一般形式:

if (表达式1)
{
    语句1       //选项1
}
else if (表达式2)
{
    语句2       //选项2
}
else if (表达式3)
{
    语句3       //选项3
}
...
else
{
    语句n+1     //选项n+1
}

·if的控制范围:if语句的控制范围由花括号{}内的语句块确定。当if语句的条件为真(true)时,这个语句块内的代码将被执行;否则,这个语句块内的代码将被跳过。

eg:以下代码演示了如何使用if语句来判断一个数是否为正数,并输出相应的信息:

#include <stdio.h>
int main() 
{
	int num;
	scanf_s("%d", &num);
	if (num > 0) 
	{
		printf("%d is a positive number.", num);
	}
	else
	{
		printf("%d is not a positive number.", num);
	}
	return 0;
}

在上面的代码中,只有当变量“num”的值满足相应条件时,if语句的相应语句块才会被执行。

·if 与else的匹配原则:

1.缺省花括号时,else总是与它上面离它最近的、未配对的if配对。

2.if与else是数目一样时,注意书写格式,采用锯齿形状。

3.if和else数目不一致时,可以加大括号来确定配对关系。

条件表达式

条件运算符是C语言中唯一的三目运算符,运算时需要三个操作数,由条件运算符及其运算对象构成的表达式成为条件表达式,一般形式:

表达式1 ? 表达式2:表达式3

表达式1 是一个布尔表达式(即结果为 true 或 false)。

如果 表达式1 的值为 true,则整个条件表达式的值为 表达式2 的值。

如果 (condition) 的值为 false,则整个条件表达式的值为 (expression2) 的值。

这种条件表达式有时也被称为 "三元运算符",因为它将三个操作符组合在一起。条件表达式通常用于简化 if-else 语句的编写,比如下面这个例子:
 

if (a > b) 
{
    max = a;
}
else 
{
    max = b;
}
//用条件表达式替代
max = (a > b) ? a : b;

switch语句

该语句常用于从多个选项中选择一个,基于单个变量或者一个简单表达式(控制表达式)的值进行选择时,常用于各种分类统计、菜单设计等。一般形式如下:

switch(expression) 
{
    case constant-expression1:
                  语句组1;
    case constant-expression2:
                  语句组2;
        ...
    case constant-expressionn:
                  语句组n;
    [default:
             语句组n+1;]
}

说明:

1.expression 是要测试的表达式。该表达式的值将会与 case 常量表达式进行比较。

2.每一个case 分支都必须以常量表达式开始,并且在每个分支中,您可以放置任意数量的语句(包括其他 switch 语句)(语句可嵌套)

3.break 语句用于退出当前分支并执行后续代码。如果省略了 break 则程序将会继续执行紧接着的下一个分支。

4.最后的 default 语句是可选的,但建议加上。当没有任何一个 case 分支匹配时,将会执行 default 分支

5.constant-expression(常量)是整型表达式,且值必须互不相同,通常使用int型数字和字符组成表达式。

6.case后可包含多个可执行语句,且不必加{}。

7.多个case也可共用一组执行语句。

eg:

case constant-expression1:
case constant-expression2:
case constant-expression3:
case constant-expression4:语句组;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值