递减运算符的奇怪行为

詹姆斯·巴拉扬(James Balajan)

我的代码旨在反向打印数组,但由于某种原因,减量运算符无法正常工作。根据我的理解,--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每次循环运行时,它仅在循环体之后才实际调用

这意味着,--varvar--将有一个行为同样的效果for环路时部分statement_2

为了产生您想要的行为,您可以将for循环更改为此:

while (--arrLen >= 0)
    printf("%d %d\n", arr[arrLen], arrLen);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递减运算符

来自分类Dev

递减运算符

来自分类Dev

递减运算符

来自分类Dev

C#+运算符的奇怪行为

来自分类Dev

PHP'and'运算符的奇怪行为

来自分类Dev

Python:和/或运算符奇怪的行为

来自分类Dev

模板运算符的奇怪行为<<

来自分类Dev

奇怪的行为:函数的三元运算符

来自分类Dev

使用条件运算符的奇怪Java行为。是虫子吗?

来自分类Dev

Ternery运算符在C ++中的奇怪行为

来自分类Dev

node.js中的奇怪&&运算符行为

来自分类Dev

F#运算符重载奇怪的行为

来自分类Dev

三元运算符在递归中的奇怪行为

来自分类Dev

Date(),Date.UTC()与范围运算符的奇怪行为

来自分类Dev

使用条件运算符的奇怪Java行为。是虫子吗?

来自分类Dev

node.js中的奇怪&&运算符行为

来自分类Dev

Ternery运算符在C ++中的奇怪行为

来自分类Dev

stl::map 中运算符 [] 的奇怪行为

来自分类Dev

三元运算符的奇怪行为

来自分类Dev

在 C++ 中使用递增/递减运算符显示数组的奇怪结果

来自分类Dev

递增/递减运算符时AND的短路

来自分类Dev

递归和递减运算符

来自分类Dev

递归和递减运算符

来自分类Dev

奇怪的C ++运算符(运算符unsigned short())

来自分类Dev

将运算符定义为类中的朋友的奇怪行为

来自分类Dev

使用空数组时比较运算符JavaScript的奇怪行为

来自分类Dev

在子类Subregex中覆盖Regexp的=〜运算符,在执行“ example” =〜subregexex时会产生奇怪的行为

来自分类Dev

逻辑运算符表现出奇怪的行为

来自分类Dev

在Android上使用Java三元运算符的奇怪行为