
求一道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 展开
#include<stdio.h>
main()
{ int k=011;
printf("%d\n",k++);
}
程序运行后的输出结果是
A)12 B)11 C)10 D)9 展开
3个回答
展开全部
首先在执行int k=011这一步的时候实际赋值是9
因为在C语言中支持三种整数,十进制的就直接写,16进制的前面加0X,8进制的前面加0,这题属于第三种,而对于下一步中实际是k++和++k的理解,其中k++是每次必须把当前需要k的操作用k的原值进行结束后才能自己+1,如果是++k则是k先自己+1然后再把得到的新k值用来进行当前操作,具体到这个题目里,也就是这一步要把k值输出,所以需要k先把原值输出出去,然后再加1,所以输出的是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再拿去操作,懂了么?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询