IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言】分支语句(ifswitch) -> 正文阅读

[C++知识库]【C语言】分支语句(ifswitch)

目录

1.什么是分支语句(选择语句)?

?1.1 if语句🚗

? ? ? ? ?1.1.1悬空else🚕

1.2?switch语句?🚙

1.2.1 break语句?🚌

1.2.2 default子句🚎


?

?

?

?

?

1.什么是分支语句(选择语句)?🛻

?

如果你学习了C语言,之后可以选择Java方向深造,亦可选择C++方向深造。

这就是分支,也叫选择语句。

9cbcc63927bd491b8792b1b0dc436b22.png

?1.1 if语句🚓

首先我们来看看if语句的基本结构

if(表达式1)
    语句1;

?

//多分支 ? ?
if(表达式1)            //如果表达式1为真,执行语句1
? ?语句1;
else if(表达式2)      // 如果表达式1为假,表达式2为真,执行语句2
? ?语句2;
else                 //如果表达式1,2都为假,执行语句3
? ?语句3;

例1.

48d34575a6764f4fb4613f382164c2ae.png

可以看到,我们最后的结果输入了ture,说明执行了第一条printf语句。?

例2.?

8dacb201a93a4efe9e62082d7b0b2449.png

?4979fc1230fb428aa3060dc5f62288a6.png

?可以看到,不同的选择,出现了不同的输出。

例3.

?cc359538ba3d43968eb3f24e957c71e4.png

?来看看这个例子,为什么输出了ture呢?

if语句里也没有判断啊?

其实是因为,在C语言中规定

非0即为真

例3中,a+b的结果是3,不为0,所以if语句判断为真,执行第一个printf语句。

?

1.1.1悬空else🏎?

什么是悬空else呢?先看代码

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("66666\n");
	else
			printf("99999\n");
	return 0;
}

先试着想象会输出什么

f6ef89fee20e42c6b501ef8b74aa5952.png

?

?你猜到了吗?这里什么都没有输出。

探究:

从第一个if语句开始,a等于1吗?答案是不等于

那么现在我们有三个选择。A.看到了else,输出99999。B.继续执行if语句b是否等于2,答案是的,输出666666。C.程序结束,什么都不输出。

好,现在我们来一一分析,A选择,我们首先要明白if else语句的匹配原则,当多个if 存在时,else匹配最近的一个if语句,我称其为就近原则,我这里故意把else对其第一个if语句,相信有很多人上当了吧。所以,这里的else是匹配第二个if语句的。自然不会输出99999.

B选择,我们来这样看看代码

dac2b9d156bc47ad84048ace5e34b28f.png

这下理解了吗,外层的if语句都为假了,内部还怎么执行。自然就不会输出66666。

所以,我们写代码时,一定要注意代码格式!不要偷懒少些括号,这些都是致命错误!

?

1.2?switch语句?🦼

1a55a7bcccad4fa693bbf6c993fff7d7.png

?与if语句一样,是选择语句。

来看看switch语句的结构

?

switch(整型表达式)
{
case 整形常量表达式:
 ? ?语句; ? ?
}

42cc585ef2c64bdea97219388fd84cfd.png

Switch的表达式为day,day=1,所以输出星期一。

?

1.2.1 break语句 🛵

如果我们要存在很多个选项,我们就要用break语句去终止。

先来看看不使用break语句的后果吧

102a758cad204c6bae604627699daf62.png

?结果输出了星期一,星期二,但我们想要的结果只是输出星期一。

所以我们要添加break语句,让break来终止。而break语句 的实际效果是把语句列表划分为不同的分支部分。

所以我们尽量在每次case语句后都加上break语句,养成好习惯。

?

1.2.2 default子句🛺

如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
和if语句的else语句是不是有点相似呢?

最后,来试试这道题吧。?

#include<stdio.h>
int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)
		{//switch允许嵌套使用
		case 1:
			n++;
		case 2:
			m++;
			n++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("m = %d, n = %d\n", m, n);
	return 0;
}

你是否做对了呢??

?

191a627d6fbe45c7b368c29ae584d481.png

?

本节分支语句就到这里结束啦!?

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 20:56:54  更:2022-10-22 20:58:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 6:41:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码