C程序设计语言学习笔记(2)
符号常量的使用
#define PRICE 20 //一改全改,符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值
还记得上节的3个小程序吗???那里 用到了一些基本的数据类型,有int long float等。
本节主要介绍基本数据类型中的易错知识:
总结如下:
符号常量的使用
#define PRICE 20 //一改全改,符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值
1、变量:int i = 3;
名字,内存中占一定的存储单元。区分变量名与变量值.
变量值3 在内存中是以二进制保存的,数值以补码表示。即数值在计算机中是以二进制补码保存的。
正数的补码与原码相同;
负数的补码:怎么求?除符号位各位取反,尾数加1
2、溢出 与 误差:
请参考一些数据类型在不同编译器下的范围的书籍。
3、数值之间的运算 ,运算符的优先级(左到右还是右到左)与 数值转换规则(char、short-》int-》unsigned-》long-》double)
在计算机中,每一个键盘标准输入都有一个ascii码与之对应,如下:
ASCII码表完整版
ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 |
0 | NUT | 32 | (space) | 64 | @ | 96 | 、 |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | ” | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | , | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | X | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | / | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ~ |
31 | US | 63 | ? | 95 | — | 127 | DEL |
NUL 空 | VT 垂直制表 | SYN 空转同步 |
SOH 标题开始 | FF 走纸控制 | ETB 信息组传送结束 |
STX 正文开始 | CR 回车 | CAN 作废 |
ETX 正文结束 | SO 移位输出 | EM 纸尽 |
EOY 传输结束 | SI 移位输入 | SUB 换置 |
ENQ 询问字符 | DLE 空格 | ESC 换码 |
ACK 承认 | DC1 设备控制1 | FS 文字分隔符 |
BEL 报警 | DC2 设备控制2 | GS 组分隔符 |
BS 退一格 | DC3 设备控制3 | RS 记录分隔符 |
HT 横向列表 | DC4 设备控制4 | US 单元分隔符 |
LF 换行 | NAK 否定 | DEL 删除 |
转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制
看程序:
1 #include <stdio.h> 2 main() 3 { 4 long c,nl; 5 nl = 0; 6 while((c=getchar())!='\n') 7 if(c=='\s')//判断输入字符中是否含有字符s,注意区分转义字符。关键查看ascii码 8 ++nl; 9 printf("%ld\n",nl); 10 }
这段程序统计 输入字符中 含有s的个数。
这里我们主要区别转义符与普通字符的:
比如space的ascii值为32 对应的八进制0x040,所以上述可以改为‘0x040’,统计输入的空格个数。这个就解释了
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制
本节主要回顾了c语言中的基本数据类型:整、实、指针、空类型。以及基本数据类型在计算机中的存储原理。