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

关于C++代码const char* a = (10, "What");的语法合法性及含义疑问

嘿,这问题问得好!让我一步步给你把这段代码的来龙去脉说清楚~

问题1:这是什么代码?

这是一段利用C里**逗号运算符(comma operator)**编写的代码,看起来有点“非主流”,但完全符合C的语法规范。

问题2:C++为什么允许这样的代码?具体含义是什么?

首先得搞懂逗号运算符的核心作用:

  • 它会按从左到右的顺序依次计算逗号分隔的每一个表达式
  • 前面所有表达式的计算结果都会被直接丢弃,只把最后一个表达式的结果作为整个逗号表达式的最终返回值

回到你的代码示例:

const char* a = (10, "What");

这段代码的执行逻辑是这样的:

  1. 先计算括号里的第一个表达式10——这就是个普通的数值,计算完之后没有任何实际作用,直接被丢弃掉
  2. 接着计算第二个表达式"What"——这是一个C风格字符串字面量,它在内存中是一个字符数组,而它本身代表的是指向该数组首字符的指针
  3. 整个逗号表达式最终返回的就是"What"的指针值,然后把这个值赋值给变量a

说白了,这段代码和下面的写法完全等价:

const char* a = "What";

前面的10纯粹是用来演示逗号运算符特性的“冗余代码”,没有实际业务意义。

C++允许这种写法,是因为逗号运算符在某些场景下确实能发挥作用——比如在for循环里同时更新多个变量,或者在一行里快速完成多个简单操作(不过日常开发里一般不这么写,会让代码可读性变差)。


内容的提问来源于stack exchange,提问作者Eduard Xue

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:07:42