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

C语言中array[a,b]这类语法是否存在?求解析相关代码输出

关于array[x=y,x+1]与你的代码输出的解释

1. 数组下标里的逗号是逗号运算符

C语言中,逗号,是优先级最低的运算符,规则很简单:

  • 从左到右依次计算逗号分隔的每个表达式
  • 整个逗号表达式的结果只取最右边表达式的值

所以你写的arr[0,1],实际是先计算0(结果直接丢弃),再计算1,最终用1作为数组下标,等价于arr[1]。你的数组arr是{5,10,15},arr[1]的值就是10,这就是输出第一个数10的原因。

同理,array[x=y,x+1]这种写法,会先执行x=y(把y的值赋给变量x),然后计算x+1,最终用x+1作为数组下标——相当于完成赋值x=y的同时,取array[x+1]的值。

2. 后面两个随机数的原因

你的printf("%d %d %d",arr[0,1]);里,格式字符串要求输出三个整数,但你只传入了一个参数。printf遇到这种情况时,会从调用栈里读取超出传入参数数量的随机内存数据,这些就是你看到的1762365112、1769491896这类无意义的垃圾值,每次运行结果可能都不一样。这属于C语言里的未定义行为,实际开发中绝对不能这么写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:56:05