一个关于C语言的编程问题。

为什么printf("\128");显示8,printf("\65");显示5,printf("\43");显示#?求解啊 ~~~

转义字符,\后面是八进制数,\x后面是十六进制
转换成相应的ASCII字符

但是第一个printf("\128");实际上是\12(换行符)和8所以输出会是换了一行8,后面两个是对应的ASCII码没错。
你想用十进制直接用printf("%c",53);(8进制的65是10进制53)也会输出5
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-10
如楼上所说,这里的确是转义字符,转义字符只有八进制和十六进制,没有十进制。
八进制:\ooo 可以是1到3个八进制数,是不存在8的。
十六进制:\xhh 可以是1到2个十六进制数。
第2个回答  2014-07-10
转义字符,\后面是八进制数,转换成相应的ASCII字符。追问

确实是这样,可是我没打\0128,也是八进制?

追答

是的,什么不打是八进制,\x开头是十六进制。

追问

哦。那在这里用什么表示十进制呢?

追答

不能用十进制。

本回答被提问者采纳
第3个回答  2014-07-10
#include <stdio.h>
void main(){
int tim,i;
float pri,sum;
printf("请输入工作时间和每小时的薪水:");
scanf("%d%f",&tim,&pri);
if(tim<0||pri<=0)
printf("!");
else if(tim<=40)
sum=tim*pri;
else if(tim<=50)
sum=40*pri+(tim-40)*pri*1.5;
else
sum=40*pri+10*pri*1.5+(tim-50)*pri*2;
printf("%6.2f\n",sum);
}本回答被网友采纳
相似回答