在C语言中,{ a[i] = a[++i] } 和 { a[i] = a[i+1]; i++; } 是等价的吗?
- 论坛
- 在C语言中,{ a[i] = a[++i] } 和 { a[i] = a[i+1]; i++; } 是等价的吗?
26 浏览
匿名的
0 Comments
从上述内容中,我们可以提取出以下问题的出现原因和解决方法:
问题的出现原因:
- 问题出现在使用和递增变量 i
的同一个序列点(sequence point)中。
- 在这种情况下,使用 a[i] = a[i++]
这样的语句会导致未定义的行为。
问题的解决方法:
- 修改语句为 a[i] = a[i+1]; i++;
可以解决问题。
- 这样修改后的语句是正确定义的,不会导致未定义的行为。
根据以上内容,我们可以得出结论:在C语言中,a[i] = a[i++];
和 a[i] = a[i+1]; i++;
这两个语句并不等价。前者会导致未定义的行为,而后者是正确定义的。