在使用C语言时,发现'\105'和0105的输出字符一样

还有'\x01'和0x01的输出都是一样的,请问下是不是那个'\'就可以等价于0呢

\不等价于0,\是转义字符,比如\n是换行符\t是制表符等等。同时\后面也可以是数字(八进制或十六进制),比如\012是换行符\011是制表符等,你应该知道一个字符也可以直接用它对应的ASCII码来表示,所以012也可以是换行符011也可以表示制表符。所以\105和0105代表的字符是一样的,同样也课用十六进制数来表示字符,
通常我们可以用0——255这256个十进制数来表示字符,它们所对应的八进制和十六进制也可以。
另外我们还可以用转义字符'\'来加上八进制数或十六进制数来表示规则是
\ddd 其中ddd代表1到3位八进制数
\0xhh 其中hh代表1到2位十六进制数。
所以并不是你所认为的那样0和\是等价的。
C语言中整型数据可用十进制,八进制,十六进制等来表示,123就是一个十进制数,0123就是一个八进制数,0x123就是一个十六进制数。
也就是说,十进制是直接表示的,八进制是也0开头的数字,十六进制是以0x开头的,所以问题里面的零是用于表示数字的进制的,而\是转义字符用于表示字符。引起误会的原因就是因为整型数字也可以表示字符。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-16
我来告诉你吧!‘\x01'的’\’是转义符,也就是说输出的‘\x01'是输出的16进制的字符型,而0\x01是16进制,输出为实型数据!
第2个回答  2009-03-16
转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制

字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。
在C程序中使用转义字符\ d d d或者\ x h h可以方便灵活地表示任意字符。\ d d d为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制A S C I I码值。\ x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。

使用转义字符时需要注意以下问题:
1) 转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
2) \v 垂直制表和\f 换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
3) 在C程序中,使用不可打印字符时,通常用转义字符表示

注:
1,\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
2,\n其实应该叫回车换行。换行只是换一行,不改变光标的横坐标;回车只是回到行首,不改变光标的纵坐标。
3,\t 光标向前移动四格或八格,可以在编译器里设置
4,\' 在字符里(即单引号里)使用。在字符串里(即双引号里)不需要,只要用 ' 即可。
5,\? 其实不必要。只要用 ? 就可以了(在windows VC6 和tc2 中验证)。

参考资料:http://zhidao.baidu.com/question/11948731.html

第3个回答  2009-03-16
\不等价于0,但是\x等价于0x。