C语言中转义字符后面加0是为什么?

如题~~ 比如/042和/42 的区别是什么?

转义字符 用反斜杠。
'\042' 是 8 进制数 42。 (ASCII 码值,八进制42,字符是双引号)
'\42' 也是 8 进制数 42
'\x42' 则是 16 进制数 42 (ASCII 码值,16进制42,字符是B)
printf("%c %c",'\042','\42'); 打印出 " "
printf("%c ",'\x42', 打印出 B
'\0' 或 "\0" 是字符串结束符追问

额,我想问的是 区别,比如/042和/42没有区别的话,那为什么前者要多加一个0?不是多此一举?

追答

先有整型规定,以0开始的数是8进制。
例如:
(1)int x=045; 这里45是8进制,
printf("%d",x); -- %d 格式打印出十进制结果,当然打出的 不是 45。
(2)int x=45; 这里45是10进制,
printf("%d",x); -- %d 格式打印出十进制结果,当然打出的 是 45。
(3)
'\42' 与 '\042' 比 少1个0 -- 在这种情况下,宽容了,允许少1个0。而不是“为什么前者要多加一个0”。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-02
\042表明,42是8进制数,而\42表明,42是10进制数,还可以写作\x33,这说明33是16进制数。追问

可是我输出 printf("\050 \n"); 结果是<
printf("\50 \n"); 结果一样是 <

请问这个怎么回事?

追答

查了查,\ddd中,ddd是8进制数;\xhh,hh是16进制数,没有10进制数之说。所以说\042和\42是相同的,开头写0是8进制数的习惯写法,不足3位时,加写一个0似乎也说的过去。

本回答被提问者采纳
第2个回答  2013-03-02
\042表明,42是8进制数,而\42表明,42是10进制数,还可以写作\x33,这说明33是16进制数
第3个回答  2013-03-02
进制不同

采纳我哦