一个超级简单的c语言程序题!!在线等!!!!

#include <stdio.h>
main()
{ int k,n,m;
n=10;m=1;k=1;
while(k++<=n)m*=2;
printf("%d\n",m);
}

我的理解是:
k=2 m=2
k=3 m=4
k=4 m=8
k=5 m=16
k=6 m=32
k=7 m=64
k=8 m=128
k=9 m=256
k=10 m=512

所以最后输出结果应该是512啊,为什么是1024,?求详解!!!!!

同学理解++k和k++的关系吗?

想法没有问题~~~但是差在这了

++k,因为++的优先级高于他们所以说k先自增,

k++,它是先调用k的本身值也就是k=1,然后将++的信息放在内存里,等再次使用k的时候才会自增,也就是说当k等于10的时候,又执行了一次,等执行过后再执行的时候k为11才循环结束,所以会出现这种情况,试试把k++换成++k

有图有真相~~


我们一起学习C语言,有不会的问题再问

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-26
1*2*2*2*2*2*2*2*2*2*2=1024
那个循环执行了10次 肯定是1024啊 怎么可能是512 大兄弟

进入第一次K是等于1的 不是等于2 。

K++ 和 ++K 的关系。 如果是++K 就是你那个逻辑了
第2个回答  2015-01-26
k++是先使用后+1,这里当k=10的时候,还是要进行循环,循环完后k=11跳出循环。
运行结果应该是:
m k
2 2
4 3
8 4
16 5
32 6
64 7
128 8
256 9
512 10
1024 11
第3个回答  推荐于2016-10-08
#include <stdio.h>
main()
{ int k,n,m;
n=10;m=1;k=1;
while(k++<=n) //循环从1~10
m*=2; //m=m*2。 1:m为2。 2:m为4. 即2的k次方。。所以2的10次方是1024
printf("%d\n",m);
}本回答被提问者采纳
第4个回答  2015-01-26
while(k++<=n)m*=2;
本代码相当于:
while(k<=n)
{
k++;
m*=2;
}

希望能帮到你。