c中下标中的字符串

Dha*_*tri 3 c

下面的代码是什么意思?我以为这是编译错误.但是没有发生编译错误.

int main() 
{ 
    const int a=1; 
    printf("%c", ++a["Gyantonic"]); 
}
Run Code Online (Sandbox Code Playgroud)

Linux a中的输出是分段错误.如果a[1]给出代替,则给出编译错误++a["Gyantonic"].

它是如何工作的?

oua*_*uah 7

 ++a["Gyantonic"]
Run Code Online (Sandbox Code Playgroud)

相当于:

++(a["Gyantonic"])
Run Code Online (Sandbox Code Playgroud)

这相当于

++("Gyantonic"[a])
Run Code Online (Sandbox Code Playgroud)

相当于

++("Gyantonic"[1])
Run Code Online (Sandbox Code Playgroud)

"Gyantonic"[1]收益'y'++增量'y'存储在字符串文字中并产生结果.但是"Gyantonic"字符串文字和字符串文字是不能修改的.这就是你得到分段错误的原因.