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