我的代码旨在反向打印数组,但由于某种原因,减量运算符无法正常工作。根据我的理解,--var
在对变量执行var
任何操作之前先减小变量,而var--
在var
诸如for
循环之类的操作完成后减小变量。
这是我的代码:
#include <iostream>
int main() {
int arrLen;
int arr[4];
scanf("%d\n %d %d %d %d", &arrLen, &arr[0], &arr[1], &arr[2], &arr[3]);
for (; arrLen >= 0; --arrLen)
printf("%d %d\n", arr[arrLen], arrLen);
return 0;
}
这是我的结果(输出中正确的值是减量变量,我将其添加到检查中):
0 4
2 3
3 2
4 1
1 0
在不打印减小的变量的情况下,应为:
0 2 3 4 1
这是我的预期结果:
2 3 4 1
之所以无法按预期运行,是因为for
循环是如何工作的。
for (statement_1; condition; statement_2) {
body;
}
statement_1
在循环开始前仅被调用一次。
condition
在循环中每遍通过的开始进行评估。如果为true,body
则进行评估。如果不是,则退出循环。
statement_2
评估后的body
刚刚重新评估之前在回路中的每遍结束时,condition
。
因此,--var
虽然递减并返回递减的值,但for
每次循环运行时,它仅在循环体之后才实际调用。
这意味着,--var
和var--
将有一个行为同样的效果for
环路时部分statement_2
。
为了产生您想要的行为,您可以将for循环更改为此:
while (--arrLen >= 0)
printf("%d %d\n", arr[arrLen], arrLen);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句