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

#include<stdio.h>main(){intk,n,m;n=10;m=1;k=1;while(k++<=n)m*=2;printf("%d\n",m);}我的理... #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,?求详解!!!!!
展开
 我来答
月光大帝2
2015-01-26 · TA获得超过239个赞
知道小有建树答主
回答量:299
采纳率:33%
帮助的人:88.2万
展开全部

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

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

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

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

有图有真相~~


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

小怜怜一条
2015-01-26
知道答主
回答量:14
采纳率:0%
帮助的人:3.9万
展开全部
1*2*2*2*2*2*2*2*2*2*2=1024
那个循环执行了10次 肯定是1024啊 怎么可能是512 大兄弟

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

K++ 和 ++K 的关系。 如果是++K 就是你那个逻辑了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Excaliburace
2015-01-26 · 超过22用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:42.8万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuiiao333
推荐于2016-10-08 · TA获得超过796个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:176万
展开全部
#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);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丕屰教育
2015-01-26 · 超过88用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:128万
展开全部
while(k++<=n)m*=2;
本代码相当于:
while(k<=n)
{
k++;
m*=2;
}

希望能帮到你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式