阅读有关ACCU过载的有趣文章#115:"恶魔可能会飞出你的鼻子"我发现作者说:
在序列点之间,不允许对涉及变量的状态做出任何假设.这也意味着在C中,与大多数其他语言不同,以下表达式会导致未定义的行为 v [i] = i ++; 因为赋值运算符不代表C中的序列点
在序列点之间,不允许对涉及变量的状态做出任何假设.这也意味着在C中,与大多数其他语言不同,以下表达式会导致未定义的行为
v [i] = i ++;
因为赋值运算符不代表C中的序列点
有人可以解释一下UB的详细推理是什么吗?我认为在两个序列点之间对同一个变量进行多次写操作是个问题,除了v [i]别名的可能性之外我在这里看不到...
c undefined-behavior
c ×1
undefined-behavior ×1