C语言中关于if else的理解

news/2024/10/18 9:17:35/

if else我们可以理解为

if(条件1)                                //如果条件1成立

        语句1;                        //执行语句1

else                                      //如果条件1不成立

        语句2;                          //执行语句2

这是一个经典的if else双分支语句,那么除了双分支外,if else还有多分支语句,本文重点讲解双分支和多分支的概念 

双分支

#include <stdio.h>
int main() {int age=10;if(age>=18)printf("成年\n");else printf("未成年\n");return 0;
}

先看代码,由于age<18,所以if里面的条件不成立,就执行语句2。

那么如果我们要给这个程序加上一个未成年不能喝酒的条件呢?

#include <stdio.h>
int main() {int age=20;if(age>=18)printf("成年\n");elseprintf("未成年\n");printf("不能喝酒");return 0;
}

这样写是错误的,当我们没有分组else下面的语句时,else默认只包含下面的第一条语句,所以现在虽然age=20,但打印的结果是这样的

那么我们的解决方法是:

1、在else下面的语句加上大括号

#include <stdio.h>
int main() {int age=20;if(age>=18)printf("成年\n");else {printf("未成年\n");printf("不能喝酒");}return 0;
}

2、else下面的语句结束时用逗号而非分号

#include <stdio.h>
int main() {int age=20;if(age>=18)printf("成年\n");elseprintf("未成年\n"),    //注意这一行最后的分号被改为逗号了printf("不能喝酒");return 0;
}

这样就能有效的解决我们在if else当中遇到多条要执行的语句并可以让它们在else当中一一对应的情况了。

多分支

if(条件1)                                 //如果条件1成立

        语句1;                         //执行语句1

else  if(条件2)                        //如果条件1不成立,执行条件2

        语句2;                           //执行语句2

else                                      //如果条件1和条件2都不成立

        语句3;                          //执行语句3

#include <stdio.h>
int main() {int age=20;if(age<18)printf("少年\n");else if(age>=18 && age<=30)printf("青年\n");else if(age>30 &&  age<=50)printf("中年\n");elseprintf("老年\n");return 0;
}

需要注意的时,当我们在写" if(age>=18 && age<=30) "的时候不能写成" 18<=age<=30 ",在c语言中如果写成这样,那么程序运行的时候就会误判

                                                        age=60
18<=age(60)为真,输出1
age(1)<=30为真,输出1

所以虽然age=60,但程序依然认为我们是" 青年 "


http://www.ppmy.cn/news/1283187.html

相关文章

ubuntu 20.04 tls桌面版扩/dev/sda5盘对应的/分区

1、安装好系统后&#xff0c;查看系统分区及盘空间情况 2、在控制台进行硬盘扩容 3、登录服务器后查看硬盘扩充后各个分区情况 4、阔分区 A、使用gparted进行扩盘 安装gparted工具 apt-get update apt-get upgrade apt-get install gparted启动gparted ~# gparted Unit t…

鸿蒙 - arkTs: 页面路由

页面栈最大容量为32&#xff0c;使用router.clear()可以清空页面栈&#xff0c;释放资源 跳转方式&#xff1a; router.pushUrl&#xff1a;目标页压入页面栈&#xff0c;使用router.back()可以返回上个页面。router.replaceUrl&#xff1a;目标页替换当前页&#xff0c;会清…

[读书笔记]网空态势感知理论与模型

一、网空态势感知的能力 1.创建问题解决工作流或流程的能力 2.查看网空防御全局情况的能力 3.管理不确定性的能力 4.基于不完整或受干扰信息进行推理分析的能力 5.在海量信息中快速锁定关键线索的能力 6.战略规划的能力 7.预测攻击者可能采取的后续动作的能力 二、网空…

65内网安全-域环境工作组局域网探针

这篇分为三个部分&#xff0c;基本认知&#xff0c;信息收集&#xff0c;后续探针&#xff0c; 基本认知 分为&#xff0c;名词&#xff0c;域&#xff0c;认知&#xff1b; 完整架构图 名词 dwz称之为军事区&#xff0c;两个防火墙之间的区域称之为dwz&#xff0c;但安全性…

ARM12.26

整理三个按键中断代码 key_it.h #ifndef __KEY_IT_H__ #define __KEY_IT_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_gic.h" #include"stm32mp1xx_exti.h" #include"stm32mp1xx_rcc.h" #include"led.h" void k…

初见 Amazon Q

前言 如果今年要写一篇年终总结的话&#xff0c;生成式 Ai 一定是绕不过的一个话题&#xff0c;自从去年的 chatGPT 火爆全球后&#xff0c;今年各种生成式 Ai 的产品络绎不绝地出现大众视线&#xff0c;版本迭代的速度也是非常快&#xff0c;大家甚至开始在自己的生活和工作中…

智能优化算法应用:基于人工兔算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工兔算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工兔算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工兔算法4.实验参数设定5.算法结果6.参考文…

c语言:计算1+2+3……+n的和|练习题

一、题目 输入一个数n&#xff0c;计算123……n的和 二、代码截图【带注释】 三、源代码【带注释】 #include int main() { int num0; printf("请输入要运算的数:"); scanf("%d",&num); sumResult(num);//相加结果函数 } //计算打印…