C - 基本循环

时间:2016-12-14 00:50:02

标签: c

我似乎对这个'for'循环有一些问题,这是一个考试问题,我无法弄清楚为什么我的逻辑不正确。

int n = 1, r, i;

for(i=0; i<5; i++)
    n *= 2;

r = n--;

在运行此代码后找到r和n的值。

这是我的逻辑(在纸面上,因此图像链接): Image

然而,正确的输出是n = 31且r = 32。为什么是这样?我哪里错了?

3 个答案:

答案 0 :(得分:10)

r = n--;在分配给r。

后递减n

答案 1 :(得分:8)

这不是for问题,而是--nn--

  • n--首先返回n作为表达式n--的值,然后执行减法n <- n-1

  • --n首先进行减法n <- n-1,然后将n的新值作为值--n

  • 返回
  1. https://en.wikipedia.org/wiki/Increment_and_decrement_operators

答案 2 :(得分:-2)

&#13;
&#13;
int n = 1, r = 0, i;

  for(i=0; i<=5; i++)
    r *= 2;

n = r--;
&#13;
&#13;
&#13;

这是最后的答案。去检查一下。希望它有所帮助。