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
进制不同

采纳我哦

C语言中转义字符后面加0是为什么?
'\\0' 或 "\\0" 是字符串结束符

C语言中转义字符后面加0是为什么?
c语言会解析为特定的含义的。也即所谓的转义字符。你如果直接printf("this is \\ ");这样就编译不过去,报错。原因就是 \\不能单独使用,要跟后面一个字符合起来使用表达特定的含义。printf("this is \\\\ ");这样 才能正确显示 \\

c语言中字符串,为什么最后要加个‘\\0' ?
\\0'在c语言中代表着字符串的结束 在你不输入'\\0'的时候 字符串不知道已经读完了 还有继续向后读 读一个字节长度是?两个字节长度 就是烫 这是ascii值决定的 汉子是两个字节就不多说了 '\\0'的ascii值为(0x)00有时候如果未定义可能会出现一堆烫知道出现默认的00(也就是'\\0')才会...

C语言中在字符串的结尾加0还是'\\0'?有区别吗?
有区别,在C中'\\0'为转义字符,为字符串结束标志。在我们输入字符串时,其实当输入结束时,编译器会自动加上'\\0'。

\\0在c语言中是什么意思?
'\\0' 是字符串的结束符,任何字符串之后都会自动加上'\\0'。如果字符串末尾少了‘\\0’转义字符,则其在输出时可能会出现乱码问题。‘\\0’转义字符在ASCII表中并不表示阿拉伯数字0,阿拉伯数字0的ASCII码为48,‘\\0’转义字符的ASCII码值为0,它表示的是ASCII控制字符中空字符的含义 具体来说,‘...

有人知道c语言中'\\\\0'合法吗为什么
不合法 单引号里面必须是一个字符, 反斜杠(\\)作为转义字符, 后面跟上它自己, 就转义成反斜杠这个字符了, 后面还有一个0, 这样就是两个字符, 而单引号里面只能放1个字符, 所以不合法 '\\\\' 和 '\\0' 是合法的 但是 '\\\\0'就是非法的 ...

在C语言中 '\\0' 和 '\\n' 都是什么意思?
\\0是字符串才有的转义字符,字符是没有的。而且\\0是你输入完这句话(你肯定会按回车确定,这时候系统就知道你输入完了这句话)系统自动加上的。比如你对一个字符数组进行初始化(数组可初始化但不可赋值):字符:char a[5]={'c','h','i','n','a'};字符串:char a[6]={'c','h'...

c语言中用\\0做字符串结束标志 \\0为什么不用\\000表示
\\000明显就是\\0的三位八进制,所以是一样的 \\00就要看后面的一位是不是数字,如果是数字也是三位八进制表示法,如果不是数字那\\0就是结束标志了

c语言转义字符'\\0'和空格输出效果一样,为什么?
0对应空字符,所以putchar('\\0')输出的就是啥都没有,看起来跟输出空格一样,但其实还是有区别的,空格是有宽度的但是'\\0'是没有的

c语言中\\0是什么意思?
'\\0'是八进制的转移字符,如果看到:\\087这就是非法的,'\\0x'表示十六进制,还有一些必备的如:'\\n','\\r'这些。和普通的字符判断相同,比如判断和'a'是否相同,ch=='a',那么判断转义一样,如ch=='\\n',逻辑表达式的结果只有两个,true和false,所有的逻辑表达式都一样,为真就是true,...

相似回答