pra*_*pta 3 c gcc sequence-points
这是一个非常简单的问题,但在序列点上甚至有一些疑问.
int a[3] = {1,2,4};
printf("%d",++a[1]);
Run Code Online (Sandbox Code Playgroud)
3
Run Code Online (Sandbox Code Playgroud)
这是一个有效的c语句,我得到输出3,这意味着它是相同的
++(a[1])
Run Code Online (Sandbox Code Playgroud)
但是这是如何可能的,因为我们有一个预增量运算符,必须先递增第a一个,然后必须发生解除引用.
请纠正我的疑问.我们怎么样3?
行为定义明确.运算符的[]优先级高于前缀++运算符.因此操作数a将绑定到[].它将被解释为
printf("%d", ++(a[1]));
Run Code Online (Sandbox Code Playgroud)