是[i ++] = 3未定义?

Ben*_*ght 3 c undefined-behavior

我是一名新手程序员(自9月开始在CS课程上学习C语言)我一直在阅读以下两个问题,以便尝试了解序列点和与它们相关的未定义行为.

为什么这些结构(使用++)未定义的行为?

为什么a = i + i ++未定义且未指定行为

我现在明白了

a[i] = i++;
Run Code Online (Sandbox Code Playgroud)

导致未定义的行为.我想知道是否

a[i++] = 4;
Run Code Online (Sandbox Code Playgroud)

属于同一类别,但我找不到任何人在任何地方讨论这个具体的例子.

Fil*_*ves 6

不,后者不是未定义的行为,因为您不是i在两个序列点之间修改和访问多次.