C标准指出,在初始化器中的完整表达式的末尾有一个序列点,并且
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
initializer-list:
initializer
initializer-list , initializer不过,这意味着
int a[2] = { i = 1 , ++i };应该没事的。有谁能解释一下为什么,或者为什么,是这样的?
发布于 2022-03-27 12:49:25
我不知道你在哪看到的。我看到https://port70.net/~nsz/c/c11/n1570.html#6.7.9p23:
初始化列表表达式的计算是不确定顺序的,因此没有指定任何副作用发生的顺序。应该没事的。有谁能解释一下为什么
它是“好的”,因为在行为被定义为未指定行为。您不知道,哪个i = 1或++i将首先或最后执行,其中一个将执行。
https://stackoverflow.com/questions/71636385
复制相似问题