首页 > 解决方案 > 为什么我的变量的值大于我设置的值?

问题描述

现在我正在研究 ARM R7,但我发现了一个我不明白为什么的情况。

这是我的代码

if ( i++ > 2048 )
{
    panic(...); <----- here it has 2050 in its coredump.
}

当它变得恐慌时,它会转储整个内存,我可以用 T32 加载它。顺便说一句,变量“i”有 2050,而不是 2049。我不明白为什么它有这样的值。有人可以解释为什么会这样,请...

PS:不是多线程的。

标签: armpipeline

解决方案


i++返回变量的先前值(同时++i返回新值)。因此,当i2049(或任何更大的值)时,条件为真并被panic调用。之前是2049 ,i之后是2050 。if无论条件是否为真,它将始终递增。这是 C、C++ 和许多其他语言的基本规则,与 ARM 或管道无关。


推荐阅读