微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

递增/递减混乱

如何解决递增/递减混乱

当我们在这里减少代码时会发生什么:

temp[--countArray[getDigit(position,input[tempIndex],radix)]]

在这种情况下,如果temp为1:我们是先递减,然后赋值为0吗?这种减量有多快?总是让我在数组括号内感到困惑。

解决方法

尝试打开不同压痕级别的支架:

temp[                                                // get this index in temp
    --                                               // decrement by 1
    countArray[                                      // get this index in countArray
        getDigit(position,input[tempIndex],radix)  // call getDigit()
    ]
]

以易于理解的术语,它调用getDigit()索引到countArray,然后递减该值并将其用于索引temp


减量运算符--xx--有所不同,因为它返回了什么。在操作结束时,x总是比原来少一,但是--x返回x new 值,而{{1 }}从减小之前返回x-- old 值。 x++x也是如此。

,

让我分解一下。这是与上面等效的一些代码:

int digit = getDigit(position,radix);
countArray[digit]--;
int count = countArray[digit];
temp[count] // Do something with the value

顺便说一下,这是为什么您不应该为了简洁而牺牲清晰度的经典例证。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。