本帖最后由 ql_zth 于 2015-2-9 20:27 编辑
这两天停更说明:首先,向各位等我更新的友友道歉,这两天由于客观原因没有更新→→客观? 我那一块区域的变压器可能由于使用太久于前天罢工了,直到今天下午才修好(我想如果不是围了几百人在那里,今晚可能继续无法更新!那个变压器在半年前就发生过爆炸,当时楼主以为在放烟火,,,汗),不废话了,开更!、、、
本次为字符篇(0本来想一次搞定,但贪多嚼不烂),学到这里,相信有的友友还是很迷糊,有点小担心:现在就不懂,以后我可以学好吗?。。。我想说的是,可以的!现在忘了没关系,这个本来就不是靠强记的,在以后的学习中用的多了自然而然就记住了!
加油!相信梦想的力量!(这是我知己和我说过的话,现在我赠送给大家自勉!)
#〓相〓〓〓〓〓信〓〓〓〓 〓〓未〓〓〓〓〓来〓# ↓ ↓ ↓ ↓ ☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆ 梦 ☆ ☆ 想 ☆ = ☆ 力 ☆ ☆ 量 ☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆ ↓ ↓ ↓ ↓ 把 握 自 己 )
15.02.09,C数据类型笔记之字符篇
每天一点小知识:
程序查错:
当编译器报错时会提示在第几行,但实际错误往往在前一行!
一、 型数据舍入误差。 第二天·笔记·补充中·有说明·(其实就是精度问题)
二、字符型数据(这个楼主就不多说了,自己看吧) 字符型数据是用单引号括起来的一个字符。例如:
'a'、'b'、'='、'+'、'?'
都是合法字符型数据。
在C语言中,字符型数据有以下特点:- 字符型数据只能用单引号括起来,不能用双引号或其它括号。
- 字符型数据只能是单个字符,不能是字符串。
- 字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5 是不同的。'5'是字符型数据,不能参与运算。
转义字符转义字符是一种特殊的字符。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各示例中printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。
常用的转义字符及其含义转义字符 | 转义字符的意义 | ASCII代码 | \n | 回车换行 | 10 | \t | 横向跳到下一制表位置 | 9 | \b | 退格 | 8 | \r | 回车 | 13 | \f | 走纸换页 | 12 | \\ | 反斜线符"\" | 92 | \' | 单引号符 | 39 | \” | 双引号符 | 34 | \a | 鸣铃 | 7 | \ddd | 1~3位八进制数所代表的字符 |
| \xhh | 1~2位十六进制数所代表的字符 |
|
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字母"A" ,\102表示字母"B",\134表示反斜线,\XOA表示换行等。
【例3-8】转义字符的使用。- #include<stdio.h>
- int main(void){
- int a,b,c;
- a=5; b=6; c=7;
- printf(" ab c\tde\rf\n");
- printf("hijk\tL\bM\n");
- return 0;
- }
字符变量字符变量的类型说明符是char。字符变量类型定义的格式和书写规则都与整型变量相同。例如:
char a,b;
字符变量在内存中的存储形式及使用方法每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。
如x的十进制ASCII码是120,y的十进制ASCII码是121。对字符变量a、b赋予'x'和'y'值:
a='x';
b='y';
实际上是在a、b两个单元内存放120和121的二进制代码:
所以也可以把它们看成是整型量。C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。
整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时,只有低八位字节参与处理。
【例3-9】向字符变量赋以整数。- #include<stdio.h>
- int main(void){
- char a,b;
- a=120;
- b=121;
- printf("%c,%c\n",a,b);
- printf("%d,%d\n",a,b);
- return 0;
- }
本程序中定义a,b为字符型,但在赋值语句中赋以整型值。从结果看,a,b值的输出形式取决于printf函数格式串中的格式符,当格式符为"c"时,对应输出的变量值为字符,当格式符为"d"时,对应输出的变量值为整数。
【例3-10】- #include<stdio.h>
- int main(void){
- char a,b;
- a='a';
- b='b';
- a=a-32;
- b=b-32;
- printf("%c,%c\n%d,%d\n",a,b,a,b);
- return 0;
- }
本例中,a,b被说明为字符变量并赋予字符值,C语言允许字符变量参与数值运算,即用字符的ASCII 码参与运算。由于大小写字母的ASCII 码相差32,因此运算后把小写字母换成大写字母。然后分别以整型和字符型输出。
字符串字符串是由一对双引号括起的字符序列。例如: "CHINA" , “C program” , "$12.5" 等都是合法的字符串。字符串和字符不同,它们之间主要有以下区别:- 字符由单引号括起来,字符串由双引号括起来。
- 字符只能是单个字符,字符串则可以含一个或多个字符。
- 可以把一个字符型数据赋予一个字符变量,但不能把一个字符串赋予一个字符变量。在C语言中没有相应的字符串变量,也就是说不存在这样的关键字,将一个变量声明为字符串。但是可以用一个字符数组来存放一个字符串,这将在数组一章内予以介绍。
- 字符占一个字节的内存空间。字符串占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0" (ASCII码为0)。这是字符串结束的标志。
例如,字符串 "C program" 在内存中所占的字节为:
字符'a'和字符串"a"虽然都只有一个字符,但在内存中的情况是不同的。
'a'在内存中占一个字节,可表示为:
"a"在内存中占二个字节,可表示为:
补充:
1、二级考试考点 舍入误差例子: 1.0/3*3=1.000000
1 /3*3=0.000000 3/2=0.000000 计算代码方: #include<stdio.h> int main(){printf("%f\n",3/2); //其他的自己把3/2替换即可}
2、ASCII码表(对于这个,楼主表示不用全记,如视频说的那样记住A-Z和a-z,字符0-9)
第一部分:ASCII非打印控制字符表ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能。此命令指示打印机跳到下一页的开头。(参详ASCII码表中0-31) 第二部分:ASCII打印字符数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现。数字127代表 DELETE 命令。(参详ASCII码表中32-127) ASCII码表0-127
Bin | Dec | Hex | 缩写/字符 | 解释 | 00000000 | 0 | 00 | NUL(null) | 空字符 | 00000001 | 1 | 01 | SOH(start of headling) | 标题开始 | 00000010 | 2 | 02 | STX (start of text) | 正文开始 | 00000011 | 3 | 03 | ETX (end of text) | 正文结束 | 00000100 | 4 | 04 | EOT (end of transmission) | 传输结束 | 00000101 | 5 | 05 | ENQ (enquiry) | 请求 | 00000110 | 6 | 06 | ACK (acknowledge) | 收到通知 | 00000111 | 7 | 07 | BEL (bell) | 响铃 | 00001000 | 8 | 08 | BS (backspace) | 退格 | 00001001 | 9 | 09 | HT (horizontal tab) | 水平制表符 | 00001010 | 10 | 0A | LF (NL line feed, new line) | 换行键 | 00001011 | 11 | 0B | VT (vertical tab) | 垂直制表符 | 00001100 | 12 | 0C | FF (NP form feed, new page) | 换页键 | 00001101 | 13 | 0D | CR (carriage return) | 回车键 | 00001110 | 14 | 0E | SO (shift out) | 不用切换 | 00001111 | 15 | 0F | SI (shift in) | 启用切换 | 00010000 | 16 | 10 | DLE (data link escape) | 数据链路转义 | 00010001 | 17 | 11 | DC1 (device control 1) | 设备控制1 | 00010010 | 18 | 12 | DC2 (device control 2) | 设备控制2 | 00010011 | 19 | 13 | DC3 (device control 3) | 设备控制3 | 00010100 | 20 | 14 | DC4 (device control 4) | 设备控制4 | 00010101 | 21 | 15 | NAK (negative acknowledge) | 拒绝接收 | 00010110 | 22 | 16 | SYN (synchronous idle) | 同步空闲 | 00010111 | 23 | 17 | ETB (end of trans. block) | 传输块结束 | 00011000 | 24 | 18 | CAN (cancel) | 取消 | 00011001 | 25 | 19 | EM (end of medium) | 介质中断 | 00011010 | 26 | 1A | SUB (substitute) | 替补 | 00011011 | 27 | 1B | ESC (escape) | 溢出 | 00011100 | 28 | 1C | FS (file separator) | 文件分割符 | 00011101 | 29 | 1D | GS (group separator) | 分组符 | 00011110 | 30 | 1E | RS (record separator) | 记录分离符 | 00011111 | 31 | 1F | US (unit separator) | 单元分隔符 | 00100000 | 32 | 20 | (space) | 空格 | 00100001 | 33 | 21 | ! | | 00100010 | 34 | 22 | " | | 00100011 | 35 | 23 | # | | 00100100 | 36 | 24 | $ | | 00100101 | 37 | 25 | % | | 00100110 | 38 | 26 | & | | 00100111 | 39 | 27 | ' | | 00101000 | 40 | 28 | ( | | 00101001 | 41 | 29 | ) | | 00101010 | 42 | 2A | * | | 00101011 | 43 | 2B | + | | 00101100 | 44 | 2C | , | | 00101101 | 45 | 2D | - | | 00101110 | 46 | 2E | . | | 00101111 | 47 | 2F | / | | 00110000 | 48 | 30 | 0 | | 00110001 | 49 | 31 | 1 | | 00110010 | 50 | 32 | 2 | | 00110011 | 51 | 33 | 3 | | 00110100 | 52 | 34 | 4 | | 00110101 | 53 | 35 | 5 | | 00110110 | 54 | 36 | 6 | | 00110111 | 55 | 37 | 7 | | 00111000 | 56 | 38 | 8 | | 00111001 | 57 | 39 | 9 | | 00111010 | 58 | 3A | : | | 00111011 | 59 | 3B | ; | | 00111100 | 60 | 3C | < | | 00111101 | 61 | 3D | = | | 00111110 | 62 | 3E | > | | 00111111 | 63 | 3F | ? | | 01000000 | 64 | 40 | @ | | 01000001 | 65 | 41 | A | | 01000010 | 66 | 42 | B | | 01000011 | 67 | 43 | C | | 01000100 | 68 | 44 | D | | 01000101 | 69 | 45 | E | | 01000110 | 70 | 46 | F | | 01000111 | 71 | 47 | G | | 01001000 | 72 | 48 | H | | 01001001 | 73 | 49 | I | | 01001010 | 74 | 4A | J | | 01001011 | 75 | 4B | K | | 01001100 | 76 | 4C | L | | 01001101 | 77 | 4D | M | | 01001110 | 78 | 4E | N | | 01001111 | 79 | 4F | O | | 01010000 | 80 | 50 | P | | 01010001 | 81 | 51 | Q | | 01010010 | 82 | 52 | R | | 01010011 | 83 | 53 | S | | 01010100 | 84 | 54 | T | | 01010101 | 85 | 55 | U | | 01010110 | 86 | 56 | V | | 01010111 | 87 | 57 | W | | 01011000 | 88 | 58 | X | | 01011001 | 89 | 59 | Y | | 01011010 | 90 | 5A | Z | | 01011011 | 91 | 5B | [ | | 01011100 | 92 | 5C | \ | | 01011101 | 93 | 5D | ] | | 01011110 | 94 | 5E | ^ | | 01011111 | 95 | 5F | _ | | 01100000 | 96 | 60 | ` | | 01100001 | 97 | 61 | a | | 01100010 | 98 | 62 | b | | 01100011 | 99 | 63 | c | | 01100100 | 100 | 64 | d | | 01100101 | 101 | 65 | e | | 01100110 | 102 | 66 | f | | 01100111 | 103 | 67 | g | | 01101000 | 104 | 68 | h | | 01101001 | 105 | 69 | i | | 01101010 | 106 | 6A | j | | 01101011 | 107 | 6B | k | | 01101100 | 108 | 6C | l | | 01101101 | 109 | 6D | m | | 01101110 | 110 | 6E | n | | 01101111 | 111 | 6F | o | | 01110000 | 112 | 70 | p | | 01110001 | 113 | 71 | q | | 01110010 | 114 | 72 | r | | 01110011 | 115 | 73 | s | | 01110100 | 116 | 74 | t | | 01110101 | 117 | 75 | u | | 01110110 | 118 | 76 | v | | 01110111 | 119 | 77 | w | | 01111000 | 120 | 78 | x | | 01111001 | 121 | 79 | y | | 01111010 | 122 | 7A | z | | 01111011 | 123 | 7B | { | | 01111100 | 124 | 7C | | | | 01111101 | 125 | 7D | } | | 01111110 | 126 | 7E | ~ | | 01111111 | 127 | 7F | DEL (delete) | 删除 |
第三部分:扩展ASCII打印字符扩展的ASCII字符满足了对更多字符的需求。扩展的ASCII包含ASCII中已有的128个字符(数字0–32显示在下图中),又增加了128个字符,总共是256个。即使有了这些更多的字符,许多语言还是包含无法压缩到256个字符中的符号。因此,出现了一些ASCII的变体来囊括地区性字符和符号。例如,许多软件程序把ASCII表(又称作ISO8859-1)用于北美、西欧、澳大利亚和非洲的语言。
本节视频链接: http://pan.baidu.com/s/1dDerTzN 密码:0emd
|