当前位置 : 主页 > 编程语言 > c++ >

Characters In Standard C

来源:互联网 收集:自由互联 发布时间:2021-06-23
一、基本字符集 1、可见字符 Form Members letter A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z digit 0 1 2 3 4 5 6 7 8 9 underscore _ punctuation ! " # % ‘ ( ) * + , - .

一、基本字符集

  1、可见字符

  Form       Members

  letter       A B C D E F G H I J  K L M N O P Q R S T U V W X Y Z

           a b c d e f g h i j k l m n o p q r s t u v w x y z

  digit        0 1 2 3 4 5 6 7 8 9

  underscore    _

  punctuation    ! " # % & ‘ ( ) * + , - . / : 

           ; < = > ? [ \ ] ^ { | } ~

  2、不可见字符

  Charater    Meaning

  space      leaving blank space

  BEL      singal an alert(bell)

  BS        go back to one position(backspace)

  FF        go to top of page(form feed)

  NL        go to start next line(new line)

  CR       go to start of this line(carriage return)

  HT       go to next horizontal tab stop

  VT       go to next vertical tab stop

  标准C使用逃逸字符表示不可见字符,关于逃逸序列的语法规则可参考图一。

  

  图一、逃逸序列语法规则

  由语法规则可知,可以用逃逸字符表示如下字符:

  Character    Escape Character

  "        \"

  ‘        \‘

  ?         \?

  \          \\

  BEL      \a

  BS       \b

  FF       \f

  NL       \n

  CR       \r

  HT       \t

  VT       \v

  除了以上这些字符,还包括又八进制和十六进制表示的逃逸字符,那么如何理解呢?

  其实,存储在计算机中的任意字符都有一个唯一的数值编码,标准C默认的字符编码规则为ANSCII,每个字符由8比特组成。

  C语言在处理字符时,实际是对字符的ANSCII值进行操作,例如,字符‘a‘在ANSCII中的编码值为97,字符‘0’在ANSCII中的编码值为48,

  也就是说我们在定义可见字符时,既可以使用单引号,也可以使用数值进行表示。

 

// define a charater
char char_a = a; //char char_a = 97; 两者的表示方式时相同的
char char_0 = 0; //char char_0 = 49;

  同样的,我们也可以使用数值定义不可见字符,除此之外还有没有类似单引号的表示方式呢,那就是八进制或十六进制的逃逸字符。  

  例如,如果我们想表示编码值为200的字符,我们既可以使用数值200进行表示,也可以使用‘\310‘或者‘\xC8‘来表示,

  其中,‘\310‘为八进制逃逸序列,‘\xC8‘为十六进制逃逸序列。

  理解了这个,我们来下面两个例子来加深一下对于逃逸字符的理解。

 

char str[] = 123;

char esc_str[] = \1\2\3;

  str在内存中的存储序列为{‘1‘, ‘2‘, ‘3‘, ‘\0‘}或者表示为{49, 50, 51, ‘\0‘},而esc_str的存储序列则为{1, 2, 3, ‘\0‘},两者值是大相径庭的。

  另外,根据逃逸字符的语法规则,其实字符串的结尾标志‘\0‘的就是八进制的逃逸字符,其等价于编码值为0的字符。

网友评论