一道C语言编程练习题,求解释

Jack1314 2012-11-11 12:30:59
代码如下:
main()
{ char a,b,c,*d;
a='\'; b='\xbc';
c='\0xab'; d="\0127";
printf("%c%c%c%c\n",a,b,c,*d);
}
编译时出现错误,以下叙述中正确的是
A) 程序中只有a='\';语句不正确
B) b='\xbc';语句不正确
C) d="\0127";语句不正确
D) a='\';和 c='\0xab';语句都不正确

标准答案是选D, 但我不明白 c='\0xab'这个错在那了,我在VC++6.0
环境下编译没错误的,该怎么解释这个错误,求大神们解释下!还有这个字符在内存中
是怎么存放的,求详解!谢谢!
...全文
278 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
一杯茶Jonathan 2012-11-11
  • 打赏
  • 举报
回复
转角天边 2012-11-11
  • 打赏
  • 举报
回复
引用 9 楼 lin5161678 的回复:
引用 8 楼 anhuizhuanjiao 的回复:不会报错的, c='xab'这样c的值是'b'不会报错 但是 c的值是多少不确定 和 具体环境有关
好吧,我是再VC6.0里面试的
A8765013 2012-11-11
  • 打赏
  • 举报
回复
lin5161678 2012-11-11
  • 打赏
  • 举报
回复
引用 8 楼 anhuizhuanjiao 的回复:
不会报错的, c='xab'这样c的值是'b'
不会报错 但是 c的值是多少不确定 和 具体环境有关
转角天边 2012-11-11
  • 打赏
  • 举报
回复
引用 5 楼 zhangqi12000 的回复:
引用 3 楼 zhuankeshumo 的回复:C/C++ code123456789101112131415转义字符 意义 ASCII码值(十进制)\a 响铃(BEL) 007\b 退格(BS) ,将当前位置移到前一列 008\f 换页(FF),将当前位置移到下页开头 012\n 换行(LF) ,将当前位置移到下一行开头 010\r 回车(CR)……
不会报错的, c='xab'这样c的值是'b'
newtee 2012-11-11
  • 打赏
  • 举报
回复
\xhh 1到2位十六进制所代表的任意字符 二位十六进制
newtee 2012-11-11
  • 打赏
  • 举报
回复
转义字符	意义	ASCII码值(十进制)
\a	响铃(BEL)	007
\b	退格(BS) ,将当前位置移到前一列	008
\f	换页(FF),将当前位置移到下页开头	012
\n	换行(LF) ,将当前位置移到下一行开头	010
\r	回车(CR) ,将当前位置移到本行开头	013
\t	水平制表(HT) (跳到下一个TAB位置)	009
\v	垂直制表(VT)	011
\\	代表一个反斜线字符''\'	092
​	​	​
\'	代表一个单引号(撇号)字符	039
\"	代表一个双引号字符	034
\0	空字符(NULL)	000
\ddd	1到3位八进制数所代表的任意字符	三位八进制
\xhh	1到2位十六进制所代表的任意字符	二位十六进制
lin5161678 2012-11-11
  • 打赏
  • 举报
回复
c='\0xab'; 这个不会导致编译错误 题目错了
AnYidan 2012-11-11
  • 打赏
  • 举报
回复
那你设断点看看如何解释 变量c
Jack1314 2012-11-11
  • 打赏
  • 举报
回复
引用 3 楼 zhuankeshumo 的回复:
C/C++ code123456789101112131415转义字符 意义 ASCII码值(十进制)\a 响铃(BEL) 007\b 退格(BS) ,将当前位置移到前一列 008\f 换页(FF),将当前位置移到下页开头 012\n 换行(LF) ,将当前位置移到下一行开头 010\r 回车(CR) ,将当前位置移到本行开头 013\t ……
这个我知道呢,但为什么没错误呢,是VC的编译器的问题吗? c='xab'这样代表什么?
转角天边 2012-11-11
  • 打赏
  • 举报
回复
\是转义符,明白这点接着分析, a和b就不说了,直接说 c='\0xab',\转义了0,\0在C语言中一般代表字符串结束,这里先不管它, 就把它当成c='xab',这样子c的值为'b'
longburulin 2012-11-11
  • 打赏
  • 举报
回复
c语言规定,转义字符常量是转义字符(反斜线字符)后跟一个特定的字符,来代表某一个特定的ASCIl码字符。反斜线后的十六进制数只可由小写字母x开头,不允许用大写字母X,也不能用0x。

69,380

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧