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

C语言 if语句有无(;)分号问题

在C语言中,if语句后面不带分号(;)的情况有两种主要形式:

1. 带有大括号的代码块:如果if语句后面跟随一个由大括号({})包围的代码块,那么这个代码块中的语句只有在if条件为真时才会执行。例如:

if (condition)
{// 这个代码块中的语句只会在condition为真时执行// 这里可以包含多条语句
}

 

2. 不带大括号的单条语句:如果if语句后面直接跟随一条单独的语句(没有大括号),那么只有这条单独的语句会被作为if的一部分执行。如果条件为真,则执行这条语句;如果条件为假,则跳过这条语句。例如:

if (condition)statement; // 只有这条语句受到if条件的控制

在这两种情况下,if语句后面都不应该有分号。分号本身是一个空语句,如果在if语句后面直接放置一个分号,如:

if (condition);

这会导致if语句实际上不控制任何代码,即使条件为真,也不会有任何语句被执行,因为分号后面什么也没有。这是一个常见的编程错误,应该避免。正确的做法是在if语句后面紧跟要执行的代码块或单条语句,而不是一个分号。


引例:

while ((ch = getchar()) != EOF)
{int i = 0;for (i = 0; i < 10; i++){if (ch == vowel[i]);{printf("Vowel\n");//注意此处写了;这是错误的 导致了后面程序执行错误break; //while函数要终止了}}if (i == 10){printf("Consonant\n");}getchar();//处理\n
}

这里的分号实际上终止了if语句,使得紧随其后的代码块无条件执行。因此,无论ch的值是否与数组vowel中的任何字符匹配,都会执行下面的代码块,打印出"Vowel"并跳出循环。

正确的代码应该去掉这个分号,如下所示:

if (ch == vowel[i])
{printf("Vowel\n");break; // Exit the for loop
}

http://www.lryc.cn/news/253898.html

相关文章:

  • Python-列表详解(列表的创建、用法、遍历、注意事项、特点等)
  • 【langchain实战】开源项目-RasaGPT
  • 在线yml和properties相互转换
  • 数据收集与处理(爬虫技术)
  • C# 雪花算法生成Id工具类
  • 什么是通配符证书?
  • 西南科技大学模拟电子技术实验五(集成运算放大器的应用设计)预习报告
  • LeetCode 每日一题 Day 4
  • 服务器数据恢复—重装系统导致XFS文件系统分区丢失的数据恢复案例
  • Scala 从入门到精通
  • 华为OD机试 - 九宫格按键输入 - 逻辑分析(Java 2023 B卷 200分)
  • leetcode:225. 用队列实现栈
  • Centos7安装GItLab(在线版)
  • Linux入门笔记
  • nvm for windows使用与node/npm/yarn的配置
  • 打工人副业变现秘籍,某多/某手变现底层引擎-StableDiffusionWebUI界面基本布局和操作
  • 01、pytest:帮助你编写更好的程序
  • C语言--每日选择题--Day37
  • Android 12 及以上授权精确位置和模糊位置
  • scp 指令详细介绍
  • 构建第一个事件驱动型 Serverless 应用
  • 特征与特征图的区别
  • Linux学习笔记之七(shell脚本的基本语法)
  • PySpark开发环境搭建常见问题及解决
  • supervisor管理启动重启,Java,Go程序Demo
  • HarmonyOs 4 (三) ArkTS语言
  • PostGIS学习教程九:空间连接
  • C++ day56 两个字符串的删除操作 编辑距离
  • Android studio中如何生成jar包?
  • 【2】基于多设计模式下的同步异步日志系统-设计模式