C语言问题请大家指点一下

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:38:18
printf("\007ABC\011DE\012FGH\0xA")
这个语句输出来的结果是
ABC DE
FGH
我刚学C语言 没弄懂这道题 哪位高手给解释一下 给积分 谢谢了

\007这样是8进制数 十进制数值是7 7对应ASCII码为\a 就是响铃
\011十进制数值是9 9对应ASCII码为\t 就是水平制表
\012十进制数值是10 10对应ASCII码为\n 就是换行
\0xA 这个应该说是\0这个东西 \0xA有人也许会认为是16进制数 但是
\xnnn才是16进制的3位数字 所以啊\0是空值 也就是说 输出printf遇到'\0'就会结束输出 所以啊后面不会输出xA
因此 可以写成printf("\aABC\tDE\nFGH\0");

把字符串分解一下:\007 ABC \011 DE \012 FGH \0xA
说明一下:
\0表示后面的数字是8进制数.
\x表示后面的数字是16进制数.
所以\007表示Ascii码为7的字符,而Ascii码为7的字符是不会显示的字符,只是让计算机的蜂鸣器叫一声(所谓的BEEP字符就是它)
\011表示十进制数9,代表了制表符(TAB),所以输出一个制表符.
\012表示十进制数10,代表了换行符的Ascii码,可以用\n替换,所以输出一个换行.
\xA表示十进制数10,与\012相同,一样的可以用\n替换.

所以最终结果为:
[响一声]ABC DE
FGH

输出的时候
\007
\011
\012
均是八进制数转换成10进制对照ASCII码值就知道
\007 是十进制7输出个音 屏幕上什么也不做
\011 是十进制9输出个制表符
\012 是十进制10输出个换行符

printf中\为控制字符标志,后面三个数字是8进制,\x再加2个数字是16进制都是ASCII码最后一个\0xA