C语言的问题++++新手问题 很简单的

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:42:09
题目(1)若k,g均为int型变量,则下列语句的输出为,:
main( )
{int k,g;
k=017;
g=111;
printf(“%d\t”,++k);
printf(“%x\n”,g++); }
为什么最后输出结果是16 6F
为什么不是18 1C
K=017其实是K=15因为十进制前面加个0就是八进制了
为什么111是10进制 不是2进制

由程序中 k=017 得知这是一个八进制数,而结果是已十进制输出所以把017化为十进制是15,在++得16
g=111 得知这是一个十进制数,而输出要求是十六进制数,111的十六进制表示为6F,但是由于是g++,是先操作后加加,所以输出仍然是6F,然后再加,此时g应该是70.
这里应该注意 ++a,a++的区别。前者是先加再操作,后者是先操作后加。

呵呵,这个问题确实是基础的东西,你是一些概念没弄清楚,首先你要弄清楚K=017和K=17不是一个道理,K=017其实是K=15因为十进制前面加个0就是八进制了!然后%x是把g的结果以十六进制的形式输出的,而++在g后边,所以在输出的时候还没有参与运算,所以结果是16 6F,至于为什么不是18我想你是处在进制没弄清楚,为什么不是1C我就不知道你为什么会得到1C了,我怎么想也想不到你怎么得出1C的

规定就是这样的,二进制应该是跟B的,而不是10开头

k = 017 = 15,++k的值为16
g = 111 = 0x6F,g++的值为0x6F