惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Webroot Blog
Webroot Blog
Project Zero
Project Zero
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN
PCI Perspectives
PCI Perspectives
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News | PayPal Newsroom
Help Net Security
Help Net Security
The Hacker News
The Hacker News
H
Heimdal Security Blog
O
OpenAI News
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
I
Intezer
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security Affairs
P
Proofpoint News Feed
S
Secure Thoughts
腾讯CDC
Google DeepMind News
Google DeepMind News
量子位
罗磊的独立博客

洛屿的小站

一种简单的卡尔曼滤波器设计 Cadence - 应律而动,落指成音 Zephyr - 聆风之息,为你而奏 不改一行插件代码,实现消息优先级与阻断 洛玖定时任务系统 在 butterfly 主题中添加首页点集动画(基于p2line项目) 你好,2026 stm32f4xx-ads1256驱动 stm32f4xx-ad9854并行驱动 主动式网站状态监测实现及其应用 右键菜单加入用Trae打开文件和文件夹 三角洲行动ID映射表 洛玖SDK说明 为网页文章开头添加原文连接 Hexo-Butterfly主题在主页添加GitHub贡献日历 Proteus中555定时器仿真问题 装饰器 洛玖开发日记 STS3032舵机获取力矩输出 kotlin网页前后端那些事 mspm0g3507-ad9850 奇怪的bug Paddle模型转PaddleLite 人工智能考核 构建一个yolov3网络 yolo和paddle模型常见输出参数 PaddleDetection 随便写的一些东西 实验室C语言第一次考核题目讲解及相关代码解读 C语言神经网络房价预测系统 C、C++数组,指针,指针数组,数组指针的区别 C、C++预处理详解 C、C++其他关键字详解 C、C++存储类型关键字详解 C、C++控制语句关键字详解 C、C++数据类型关键字详解 C、C++关键字 C++药品管理系统 Bi-LSTM(Attention)的PyTorch实现 C语言实现波士顿房价预测 easy库的使用 edgeboardFZ3A相关问题 Predict.py的编写 Paddle环境搭建 百度Paddle模型训练 GMD09601-0.96OLED显示屏 【LeetCode 1617】统计子树中城市之间最大距离 C语言学习相关 STM32阵列按键 CH32(F10X F20X) 最短路 拓扑排序
C、C++的大括号是必须的部分吗?
洛屿 · 2023-10-10 · via 洛屿的小站

在作为一名初学者,你可能看到一些课程中,对于判断或者循环部分,会使用类似这样的两种方式:

1
2
3
4
5
6
7
8
9
10
11
12
// 方式1
if(a > 1){
printf("a > 1");
}
for (int i = 0; i< 10; i++) {
printf("%d\n", i);
}
// 方式2
if(a > 1)
printf("a > 1");
for (int i = 0; i< 10; i++)
printf("%d\n", i);

并且你会发现,对于这两种方式,他们的效果一样。

那么大括号{}括起来和不括起来有什么区别呢?


在C语言中,if语句后面的圆括号()内的表达式决定了条件是否为真。

当条件为真时,if语句后面的代码块将被执行。

这个代码块可以是单个语句,也可以是用大括号{}括起来的多个语句

下面我来解释两种写法的差异:

1
2
3
  if(a > 1) { 
printf("条件为真时执行的代码");
}

这种写法使用了大括号{},将一组语句组成了一个代码块。如果条件a > 1为真,那么大括号内的所有语句都将被执行。

1
2
if(a > 1) 
printf("条件为真时执行的代码");

这种写法没有使用大括号{},只包含了一个单独的语句。如果条件a > 1为真,那么仅仅执行紧随其后的这个语句。

所以,对于这种情况,两种写法的效果是一样的,只不过一种是用大括号明确地定义了一个代码块,另一种是单独的语句。

这种用大括号括起来的部分通常被称为代码块或语句块,它可以包含一个或多个语句,用于组织多条语句以在特定条件下执行。使用大括号可以增加代码的可读性,并避免潜在的歧义,特别是在多条语句的情况下。

不过在某些简单情况下,可以选择不使用大括号,但这通常不被推荐,因为它可能导致代码在以后的修改中出现问题。

如果在 if 语句中不使用大括号括起来代码块,你可能会遇到以下问题:

  1. 逻辑错误:最常见的问题是逻辑错误。如果你不小心缩进了代码,以使其看起来好像属于 if 语句,但实际上不是,这可能会导致代码不按预期运行。

  2. 可读性差:缺少大括号会使代码的结构不够清晰,降低了可读性。其他开发人员阅读代码时可能会难以理解哪些代码是条件成立时执行的。

  3. 维护问题:如果以后需要在条件成立时执行多个语句,你可能会忘记添加大括号,从而导致错误。这种错误很难发现,并且可能导致严重的问题。

例如,考虑以下代码:

1
2
3
if (x > 10)
printf("x 大于 10");
y = x * 2;

在这个示例中,printf 看起来好像是条件成立时执行的,但实际上,只有 printf 会受到 if 语句的条件影响。y = x * 2 不受条件控制,这可能不是你的意图。

为了避免这种潜在的问题,建议始终使用大括号来明确地定义代码块,即使在 if 语句中只有一个语句也是如此,这样可以提高代码的可读性和健壮性,降低出错的可能性。例如:

1
2
3
4
if (x > 10) {
printf("x 大于 10");
y = x * 2;
}

这种方式更清晰,更容易维护,且不容易出现潜在错误。

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 洛屿的小站

打赏

  • wechat

    wechat

  • alipay

    alipay