C语言 所有{}都可以省略吗

本文介绍了C语言中的基本结构,如选择结构(if,switch)、循环结构(for,while,do-while),强调了在函数定义、循环体和语句块中不能省略花括号的重要性。同时,通过函数定义与声明的对比,解释了语法冲突的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

{}, 程序一般用来表示作用范围或者执行范围.
主要有如下使用:

  1. 函数
  2. 选择结构:if语句,switch语句
  3. 循环结构: for型循环, while型循环, do-while型循环
  4. 数组    
  5. 复杂数据类型:
    结构体
    共用体
  6. 面向对象

同上回答,除选择结构和循环结构在有的情况下可以省略外,其他情况都不能省略。
如果不确定,一般就不考虑省略。都给用上,是肯定不会有错的。万一省略不当,程序瘫痪了就不好了!

如if(if else), switch和 for, while循环体只有一条语句时可以省略{}.

函数定义中即使只有一条语句, {}也不能省略.

简单C语法分析, 非严谨理论,仅供参考.

自顶向下语法分析,其中有两个层次定义分别叫代码段(“Code block”)和语句(“Statement").
Statement就是合法的Token组合并以分号(;) 结尾的语句,
Code block则是以花括号({}) 包围的0条到多条Statement.

函数的定义,后面必须是Code block, 而if和while, 后面可以是Code block或一条Statement.

那为什么函数定义后面不能是Statement呢?因为Statement可以是空的,即一个分号“,”. 这种
情况会和“函数声明’的语法冲突.

想想这种情况:“void f() ;”
如果函数定义后面可以接Statement的话,那么上面这段代码该解析为函数声明还是一个空函数
呢?
相反的情况是extern的使用,之所以变量的声明需要extern而函数却可以不用,正是因为不加
extern时会和变量定义的语法冲突,而函数声明却不会.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值