回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C/C++教程 >> C 语言基础教程 >> 15. 基本数据类型:字符型(中)
最 近 更 新
54. goto 语句
53. switch 语句推荐
52. continue 和 break
51. 条件运算符(?:)
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
46. if 语句
45. 循环应用实例 2
最 新 推 荐
53. switch 语句推荐
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
44. 循环应用实例 1推荐
43. 循环嵌套推荐
40. for 循环推荐
37. 关系运算符推荐
36. while 循环推荐
热 门 排 行
2. 第一个 C 程序推荐
31. 预处理指令 #define..推荐
1. C 语言简介
11. 基本数据类型:整型..推荐
24. 运算符的优先级和结..推荐
5. 如何编写函数
30. 字符串字面量推荐
13. 标识符命名规则
36. while 循环推荐
7. 第三个 C 程序推荐
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

15. 基本数据类型:字符型(中)


来源:蚂蚁的 C/C++ 标准编程 作者:antigloss 等级:精品
发布于2006-01-10 13:58 被读3040次 【字体:

不可打印字符(Nonprinting Characters

 

 

    有些 ASCII 字符是不可打印的。例如退格另起一行警报等。C 语言提供了两种方法来表示这种不可打印字符

 

    第一种方法是使用 ASCII 编码。例如,ASCII 编码中,7 用于表示警报:

 

        char beep = 7;

 

    第二种方法是使用特殊符号序列,也就是所谓的转义字符escape sequences。参见下表:

 

    转义字符          含义

          \a            警报( Alert (ANSI C)

          \b            退格(Backspace

          \f            换页(Form feed

          \n            换行(Newline

          \r            回车(Carriage return

          \t            水平制表符(Horizontal tab

          \v            垂直制表符(Vertical tab

          \\            反斜杆( Backslash (\)

          \'            单引号( Single quote (')

          \"            双引号( Double quote (")

          \?            问号( Question mark (?)

          \0oo        八进制数( Octal value (o 代表一个八进制数字)

          \xhh        十六进制数( Hexadecimal value (h 代表一个十六进制数字)

 

给变量赋值的时候,转义字符必须使用单引号引住。例如:

 

          char nl = '\n';

 

下面我们详细学习每个转移字符的含义。

 

    \a(警报)是 ANSI C89 添加的,用于产生可听或者可视的警报。\a 产生的效果取决于硬件。一般来说,输出 \a 会产生鸣响。但是在某些系统,输出 \a 不会产生任何效果,或者仅仅显示一个特殊字符。标准明确指出,\a 不应该改变当前活跃位置active position)。所谓活跃位置,是指显示设备(显示器、打字机、打印机等等)显示下一个字符的位置。以显示器为例,活跃位置就是指光标所处的位置,输出 \a 不会导致光标移动位置。

 

\b\f\n\r\t,以及 \v 都是输出设备控制符。退格符(\b)使当前行的活跃位置后退一个位置。换页符(\f)使活跃位置跳到下一页的开端。注:换页符可用于控制打印机换页,但不会导致 PC 机的显示屏换页。换行符(\n)使活跃位置跳到下一行的开端。回车符 ( \r ) 使活跃位置返回当前行的开端。水平制表符(\t)使活跃位置移动若干个位置(通常是8个)。垂直制表符(\v)使活跃位置换若干行。注:\v可用于控制打印机换若干行,但是不会导致PC机的显示屏换行。

 

    \\\',以及 \" 使我们可以把 \' " 用作字符常量。如果要打印以下句子:

 

"\ is called 'backslash'."

 

我们需要使用如下语句:

 

printf("\"\\ is called \'backslash\'.\"");

 

或者

 

printf("\"\\ is called 'backslash'.\"");

 

注意,在字符串字面量中,无论写 \' 还是 ',输出都是一样的。但是,在给字符变量赋值时,一定要写 \'。例如:

 

char ch = ''';   /* 错误! */

char ch = '\'';   /* 正确。 */

 

 

    \0oo \xhh ASCII码的两种特殊表示形式。如果想用八进制ASCII码表示字符,可以在八进制数前面加上 \ ,然后用单引号引起来。例如:

 

            beep = '\007';        /*  \007 代表 \a  */

 

打头的那些0可以省略,也就是说,写成 '\07' 或者 '\7' 都一样。无论有没有打头的0 7 都会被当成八进制数处理。

 

    C89 开始,C提供了用十六进制表示字符常量的方法:在反斜杆后面写一个 x ,然后再写 1 3 个十六进制数字。例如:

 

            nl = '\xa';        /*  \xa 代表 \n  */

 

    注意:使用ASCII码时,要注意区分数字数字字符。例如:字符4ASCII码是52 '4' 代表字符 4 ,而不是数字4。此外,尽管 '\n' '\xa' '\a' '\007' 是等价的,但是我们应该尽可能使用 '\n' '\a' ,而不要用 '\xa' '\007' 。这是因为前者易懂、便于记忆,而且移植性更高。而后者只对使用ASCII码的系统有效。

 

参考资料:C Primer 5th Edition

                    C99 标准

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:C 语言数据类型
38. 布尔类型再探讨
30. 字符串字面量

上一篇:14. 基本数据类型:字符型(上)
下一篇:16. 基本数据类型:字符型(下)

共有评论 0 条 网友评分 0分 查看全部评论

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss