基本C循环比较

Jut*_*uto 1 c arrays for-loop while-loop

特定

int x[10];
int y[10];
int n = 10;
Run Code Online (Sandbox Code Playgroud)

版本1

int i = 0;
while (i < n)
  y[i] = x[i++];
Run Code Online (Sandbox Code Playgroud)

版本2

for (int i = 0; i < n; i++)
  y[i] = x[i]
Run Code Online (Sandbox Code Playgroud)

这两个版本总是相同吗?如果没有,他们什么时候不相同?

Gre*_*ill 7

这一行:

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

未定义的行为.您不能使用ii++相同的语句中.

您的版本2与控制语句i++内部一样for正常.

  • @Juto:也许你的编译器使用你正在使用的当前选项设置编译该语句,就好像它是从左到右阅读一样.但是,这绝不是语言标准所保证的,并且编译器上的不同编译器甚至不同的设置可能会生成不会产生相同结果的不同代码. (2认同)