当前位置: 首页 > news >正文

if语句:悬空else问题

如果有多个if和else,可以记住这样一条准则,else总是跟最接近的if匹配。

我们从下面的代码开始:

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

程序运行的结果是啥?

什么也没有,初学者一上来就判断a=0,不等于1,那就执行else,结果是:啥也没有。

为什么呢?

这就是悬空else的问题,如果有多个if和else,可以记住这样一条准则,else总是跟最接近的if匹配。

上面的代码排版,让我们认为第一个if和else,是匹配的,当if不成立的时候我们就认为会执行else,打印haha,但实际上第二个if语句才是和else语句匹配的,嵌套在第一个if语句中,当第一个if语句不成立,自然嵌套的语句也无法执行,最终啥也不打印。

如果改成下面这样的代码就更容易理解了:

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

如果我们希望else与第一个if匹配,可以这样修改代码:

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

只要带上适当的大括号,代码的逻辑就会更加清晰,所以大家以后写代码的时候要注意括号的使用,让代码的可读性更高。


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SpringBoot开发——数据校验
  • echarts3D地图:旋转、添加纹理图片(vue3)
  • 信息学奥赛初赛天天练-85-NOIP2014普及组-基础题4-链表、随机存取、顺序存取、二分查找、二分比较、循环结构、图领奖
  • RabbitMQ 应用
  • 【OJ】常用技巧
  • Mysql高级教程
  • 【电子通识】洁净度等级划分及等级标准
  • 远程桌面 Rust Desk 自建服务器
  • 使用procfs
  • 文件的时间戳
  • 【区块链 + 人才服务】基于 FISCO BCOS 联盟链的电子证书认证平台 | FISCO BCOS应用案例
  • Kubernetes 1.25 containerd 环境部署 SuperMap iManager
  • 前端工程化2:从0-1的eslint插件开发教程
  • Proxfier+burpsuite抓包配置问题
  • LTspice模拟CCM和DCM模式的BUCK电路实验及参数计算
  • 【Linux系统编程】快速查找errno错误码信息
  • 77. Combinations
  • cookie和session
  • IP路由与转发
  • JavaScript标准库系列——Math对象和Date对象(二)
  • js写一个简单的选项卡
  • k8s如何管理Pod
  • learning koa2.x
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • rabbitmq延迟消息示例
  • React系列之 Redux 架构模式
  • 编写高质量JavaScript代码之并发
  • 树莓派 - 使用须知
  • 小而合理的前端理论:rscss和rsjs
  • 说说我为什么看好Spring Cloud Alibaba
  • 通过调用文摘列表API获取文摘
  • ​secrets --- 生成管理密码的安全随机数​
  • ###项目技术发展史
  • #define,static,const,三种常量的区别
  • (1)Nginx简介和安装教程
  • (floyd+补集) poj 3275
  • (Git) gitignore基础使用
  • (SpringBoot)第二章:Spring创建和使用
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (过滤器)Filter和(监听器)listener
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (四)软件性能测试
  • (一)认识微服务
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)Oracle 9i 数据库设计指引全集(1)
  • ***检测工具之RKHunter AIDE
  • .NET delegate 委托 、 Event 事件
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET开源、简单、实用的数据库文档生成工具
  • .net生成的类,跨工程调用显示注释
  • .net实现客户区延伸至至非客户区
  • @EnableConfigurationProperties注解使用
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——