c语言转义字符

c语言转义字符今天遇到一道题 有以下程序 voidmain chara b c p a b xbc c 0xab p 0127 printf c c c c n a b c p 编译时出现错误 以下叙述中正确的是 A 程序中只有 a 语句不正确

今天遇到一道题:

这道题里a= ‘\’是不正确的,必须是a= ‘\\’,因为\标识转义字符,如果是 ‘\’,那\’就会被当做转义字符,字符会缺一个单引号,语法错误,需要后面再加个单引号,如a= ‘\”,但这样得到的字符就是\’了。关于b和c,转义字符\h、\hh、\hhh斜杠后面的是1~3位八进制数,该转义字符为ASCII码等于该值的字符;转义字符\xh、\xhh的\x后面的是1~2位十六进制数,该转义字符为ASCII码等于该值的字符。所以b= ‘\xbc’是对的,相当于b=0xbc,也即十进制的-68,虽然这个数对于ASCII字符没有意义,但作为char的数值是没有错的(char是带符号八位整形,取值范围为-128~127);c= ‘\0xab’是错的,没有这个表示方法。p=“\0127”是对的,这里\012是一个转义字符,相当于八进制的12,查ASCII表可知是换行符\n,所以p相当于p= “\n7”。所以a和c变量是错的,答案选D。

不过实际编程实现了以后发现c= ‘\0xab’并没有报错,只是报了两个warning,字符最后打印的值是 ‘b’。

这是因为 ‘\0xab’ 其实是个多字符字符(multi-character character),它其实是四个字符 ‘\0’ ‘x’ ‘a’ ‘b’组成的,如果c是int类型的话,在windows系统下它的值会是(120*256*256+97*256+98),但这里c是个char类型,所以它的值就是末尾的8bit,也就是最后一个字符 ‘b’。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216429.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:52
下一篇 2026年3月18日 上午11:53


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号