我似乎对这个'for'循环有一些问题,这是一个考试问题,我无法弄清楚为什么我的逻辑不正确。
int n = 1, r, i;
for(i=0; i<5; i++)
n *= 2;
r = n--;
在运行此代码后找到r和n的值。
这是我的逻辑(在纸面上,因此图像链接): Image
然而,正确的输出是n = 31且r = 32。为什么是这样?我哪里错了?
答案 0 :(得分:10)
行r = n--;
在分配给r。
答案 1 :(得分:8)
这不是for
问题,而是--n
和n--
。
n--
首先返回n
作为表达式n--
的值,然后执行减法n <- n-1
。
--n
首先进行减法n <- n-1
,然后将n
的新值作为值--n
答案 2 :(得分:-2)
int n = 1, r = 0, i;
for(i=0; i<=5; i++)
r *= 2;
n = r--;
&#13;
这是最后的答案。去检查一下。希望它有所帮助。