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
相关产品推荐
相关产品推荐

