作业帮 > 综合 > 作业

printf("k=% %d\n",结果呢?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/05 17:19:10
printf("k=% %d\n",结果呢?
char ch; int a;
ch='a'; a=12;
printf("%x,%o,",ch,ch,a);
printf("k=% %d\n",k);
有错误!
printf("%x,%o,",ch,ch,a)中%x,%o是说把变量表中的第一个ch按十六进制输出,第二个ch按八进制输出,可是没有与a匹配的控制符.
printf("k=% %d\n",k);中的控制符似乎多了个%,这样编译器认为是要输出%(因为%有特殊用途,要输出的话得写两个才输出一个),结果就输出了k=%d,而不会输出a,因为没有配对的控制符.
再问: 没有,题目就是这样的,那个a是不会输出的,而且下面就是有两个%, 答案是61,141,k=%d
再答: 那还有什么追问的?我不都说清楚了嘛!十六进制61就是十进制97;而八进制141也是十进制97,它们都是'a'。
再问: 我是不知道为什么最后输出那个会是k=%d
再答: printf("k=% %d\n",k);中的控制符似乎多了个%,这样编译器认为是要输出%(因为%有特殊用途,要输出的话得写两个才输出一个),结果就输出了k=%d——还没说明白?因为把% %解释为一个%,这样"k=% %d\n"就不是控制符(因为控制符必须以%开头),而是一个字符串k=%d,那自然要输出了!