求一道C语言题,我是初学者,希望越详细越好

1、有以下程序,其中k的初值为八进制数#include<stdio.h>main(){intk=011;printf("%d\n",k++);}程序运行后的输出结果是A)... 1、有以下程序,其中k的初值为八进制数
#include<stdio.h>
main()
{ int k=011;
printf("%d\n",k++);
}
程序运行后的输出结果是
A)12 B)11 C)10 D)9
展开
 我来答
Crazy__Coder
2012-03-15
知道答主
回答量:10
采纳率:0%
帮助的人:5.6万
展开全部
首先在执行int k=011这一步的时候实际赋值是9
因为在C语言中支持三种整数,十进制的就直接写,16进制的前面加0X,8进制的前面加0,这题属于第三种,而对于下一步中实际是k++和++k的理解,其中k++是每次必须把当前需要k的操作用k的原值进行结束后才能自己+1,如果是++k则是k先自己+1然后再把得到的新k值用来进行当前操作,具体到这个题目里,也就是这一步要把k值输出,所以需要k先把原值输出出去,然后再加1,所以输出的是9,不理解的话可以继续提问!
追问
谢谢你,++i和i++对我这个初学者来说,还是个难点,我再问一道类似的题目,麻烦你回答一下:若定义整型 x=5,y=4     则x>y++与x<++y的值分别是多少?麻烦你说详细些,谢谢了
追答
对于x>y++这个比较因为对于右边的y,当前有一个操作需要他去处理也就是去和x比较大小这件事需要他去做,对于y++的话就是我先去把y的原值不变也就是4拿去和x比较,也就是5>4结果当然是真了,比较之后呢y再+1变成y=5了,对于第二种x<++y,++y的话就是先对y进行+1操作,让y=5然后再去和x比较大小,也就是5<5,显然是结果是假的。
其实对于a++,++a这种操作其实就是前者是先把a拿去操作然后再+1,而后者则是先+1再拿去操作,懂了么?
645256167leg
2012-03-15 · 超过50用户采纳过TA的回答
知道答主
回答量:176
采纳率:0%
帮助的人:174万
展开全部
K是以八进制的形式输入!011就是9,然后输出时实行K++即自加运算相当于 k=k+1;但是k++的结果是9,但是此时k已变成10 输出事k++所以是9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
云笺写小诗Cfa0
2012-03-15
知道答主
回答量:46
采纳率:0%
帮助的人:21.3万
展开全部
B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式