【发布时间】:2021-02-10 02:36:45
【问题描述】:
为什么i++;给我奇怪的随机数,而不是i + 1;在for循环中?
我对编程很陌生,所以我想了解这里的区别。
我的猜测是 i 以某种方式被覆盖,这使得编译器从内存中取出随机数。
#include <stdio.h>
int main() {
int arr[100];
for (int i = 0; i < 100; i++) {
arr[i] = i + 1; //why wouldn't i++ work?
}
return 0;
}
【问题讨论】:
-
C 区分大小写,因此在编码时要非常非常小心。
main和Main是两个不同的东西。 -
arr[i] = i++- 首先计算等式的哪一侧 - 增加i或计算arr[i]引用以将值分配给? -
另见 Why are these constructs using pre and post-increment undefined behavior?
arr[i] = i++将是未定义的行为。
标签: arrays c for-loop undefined-behavior post-increment