You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中带分号的赋值操作:属于表达式还是语句?

关于C语言中赋值是表达式还是语句的解答

赋值操作本身是表达式,这是C语言的核心特性。赋值表达式会返回赋值后左操作数的值,所以才支持a = b = c = 10这种链式赋值——本质是从右往左依次计算:先执行c = 10(这是个表达式,返回10),再把结果赋值给b(同样是表达式,返回10),最后赋值给a。

而当给表达式加上分号时,它就变成了表达式语句,这是C语言中语句的一种类型。比如b = 2;,其中b = 2是赋值表达式,加上分号后就构成了一条完整的执行语句。

结合你给出的代码具体分析:

  • 第一段代码里的a = b = c = 10;:a = b = c = 10是复合赋值表达式,加分号后成为一条表达式语句。
  • 第二段代码里的b = 2;、c = 3;、a = b + c;:每一行中,b = 2、c = 3、a = b + c都是表达式(前两个是单纯的赋值表达式,最后一个是包含算术表达式的赋值表达式),加分号后各自成为独立的表达式语句。

简单总结:赋值的“核心”是表达式,当它后面加上分号,就升级成了语句。很多资料的矛盾点,本质是混淆了“赋值表达式”和“表达式语句”这两个概念——前者属于表达式范畴,后者属于语句范畴,而表达式语句可以由任意表达式加分号构成,赋值表达式只是其中最常用的一种。

内容的提问来源于stack exchange,提问作者Qingyang Gu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:08:10