《C语言程序设计》第三章-C语言基础-课堂笔记.doc
精品 Word 文档,知识共享 C 语言程序设计 第 三 章 C 语言基础 课堂笔记 3.1 基本字符集、关键字和标识符 一 基本字符集 字符是 C 的基本元素, C 语言允许使用的基本字符集 1 26 个大写字母 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 2 26 个小写子母 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 3 10 个阿拉伯数字 0 1 2 3 4 5 6 7 8 9 4 其他字符 “ 说明变量存储方式 规范存储在该 变量中的值的取值范围和所能 可省略 参加的运算 例如 int student; /*定义了整型变量 student*/ 3 几点说明 a. 符号常量与变量 两者的名字都是标识符,但所代表的值,一个不可变,一个可变。 b. C 语言要求对所用到的变量作强制定义,“先定义后使用”,用处有三 书 P40 凡未被事先定义的,不作为变量名 指定变量的数据类型,在编译时,为其分配相应的内存单元 指定变量的数据类型,在编 译时,可检查其参加的运算是否合法 3.4 整型数据 3.4.1 整型变量 在介绍 C语言的 整型变量之前,简单的介绍一下 计算机中的数值表示。在计算机中数值可以采用多种不同的方法,一般常用的有原码、反码和补码。 1.原码 只将最高位作符号位(以 0代表正, 1代表负),其余的各位代表数值本身的绝对值(以二进制表示)。如 7 的原码为 00000111 -7 的原码为 10000111 0 的原码为 00000000 -0 的原码为 10000000 显然, 0和 -0表示的是同一个 0,而在内存中却有两个不同的表示。也就是说, 0的表示不唯一,这不适合计算机的运算。 精品 Word 文档,知识共享 2. 反码 如果是一个正数,则它的反码与原码相同。 如果是一个负数,则符号位为 1,其余各位是对原码取反。 如 7 的反码为 00000111 -7 的反码为 11111000 0 的反码为 00000000 -0 的反码为 11111111 同样,反码 0的表示也不唯一。用反码表示数,现已不多 用。 3.补码 如果是一个正数,则它的 补 码与原码相同。 如果是一个负数,则将该数的绝对值的二进制形式,按位取反,然后再加 1。 如 7 的 补 码为 00000111 -7 的 补 码为 11111001 0 的 补 码为 00000000 -0 的 补 码为 100000000 补 码 0的表示是唯一的,所以计算机是以补码形式存放数的。 例计算 25-18, 用补码运算。 25 的补码为 00011001 -18 的补码 为 11101110 00011001 11101110 00000111 一 整型变量的分类 类型名称 类型说明符 缩写类型说明符 长度 取值范围 整型 int 16 -3276832767-215215-1 无符号整型 unsigned int unsigned 16 0655350216-1 短整型 short int short 16 -3276832767-215215-1 无符号短整型 unsigned short int unsigned short 16 -3276832767-215215-1 长整型 long int long 32 -21474836482147483647-231231-1 无符号长整型 unsigned long int unsigned long 32 042949672950232-1 说明 A C 标准并未规定以上类型所占据的内存字节数,各种机器处理有所不同 B 有符号和无符号的区别在于对最高位的解释 见书 P44 图 3.5 二 整型变量的定义 看几个例子 int a,b; unsigned short c,d; long e,f; 精品 Word 文档,知识共享 3.4.2 整型常量 一 整型常量的表示形式 1 十进制整数 如 78 2 八进制整数 以 0 开头,如 071 3 十六进制整数以 0 x 开头,如 0 x7a5 二 整型常量的类型 1 按整数范围来区分 2 非负整数亦可认为是 无符号型 3 整数后加 L 或 l,强调为长整型常量; 例如 582L 整数后加 U 或 u,强调为无符号型整型常量 3.5 实型数据 一 实型变量 实型变量的类型单精度和双精度。 类型名称 类型说明符 长度 bit 有效数字 取值范围(绝对值) 单精度实型 float 32 7 10-381038 双精度实型 double 64 15 10-30810308 二 实型常量 实型常量的表示形式 1 小数形式由数字和小数点组成,如 0.38、 38.5 等 2 指数形式尾数 eE指数 如 1.35E21.35*102 0.11E50.11*105 注意 1 E 前必须有数字, E 后的指数必须为整数; 2 实型常量不区分 float 或 double; 如 float a; a112234.567; 但 float 变量只截取 7 位有效数字,所以最后两位数字不起作用。 3.6 字符型数据 3.6.1 字符常量 一 可视字符 以单引号括起来的一个可打印字符;例 A, x , , 二 转义字符 以 开头的字符序列表示一个字符,通常用于不可打印的字符。 常用的转义字符 书 P48 3.6.2 字符变量 一 字符变量的类型 类型名称 类型说明符 长度 取值范围 字符型 char 8 0255 二 字符变量的定义 字符变量类型说明符 变量名列表 例 char c1,c2; 注 字符变量用来存放字符常量,只能是一个字符。 精品 Word 文档,知识共享 三 字符数据在内存中的存储形式及其 使用方法 一个字符占一个字节的存储单元,存储单元存放的是该字符相应的 ASCII 码值 是以二进制形式存放的 ,因此可有 256 个字符。 1 ASCII 字符集 128 个扩展字符 2 在内存中存储的代码值形式,亦可看作整型,字符数据和整型数据可以互相赋值。 3 对有符号的字符变量,其所占据的字节的最高位表示符号,则可把字符处理为带符号的整数。 例如 c1A 01000001265 3.6.3 字符串常量 字符串常量形式 以双引号括起来的字符序列。 1 若在字符串中含有 “ 和 字符,必须使用转义字符形式 2 字符串的长度 字符串中字符的个数,而字符串常量在内存中存储时,系统自动在其末尾加上 0作为字符串结束标志,所以存储字符串的所用字节数比字符串长 1。 例如 “Happy New Year “ “CHINA“ “315“ “He said “Hello““ 比较 a 与 “a“的区别。 注意 C 语言中没有字符串变量,只能用字符数组存放字符串常量。 3.7 变量赋初值 变量初始化 在变量定义的同时,根据程序需要赋初值。 例如 int i5,j5; float f,g3.5; 说明 1 对于几个变量赋同一初值,不可写成 int ij5; 2 初值必须是常量或操作数是常量的算术表达式。 3 初始化不是在编译阶段完成的,是在程序运行时执行本函数时赋以初值的。 3.8 各类数值型数据间的混合运算 在 C 语言中,整型、实型和字符型数据间可以混合运算。 不同类型的数据先转换为同一类型,然后进行运算。 转换规则见书 P54。 3.9 算术运算符和算术表达式 3.9.1 运算符和表达式 运算符的分类 1 按运算符的操作对象个数分类单目;双目;三目 2 按功能分类 见 P55 表达式将运算符和变量、常量、函数按一定语法规则结合起来的式子。 3.9.2 算术运算符和算术表达式 一 基本算术运算符 加法运算符 - 减法运算符 * 乘法运算符 / 除法运算符 整型 /整型,结果为整数,即取商的整数部分 操作数有 一个为实型,则商亦为实型 0 1 0 0 0 0 0 1 c1 精品 Word 文档,知识共享 模运算符 操作数必为整型,结果为相除的余数 二 算术表达式 用算术运算符、自加自减运算符、括号将运算对象连接起来的式子称为算术表达式。 三 表达式求值 在表达式求值过程中 1 优先级高的先求值。 优先级 决定了不同的运算符求值的先后顺序,优先级高的先求值; 2 当一个运算对象两侧的运算符优先级相同时,根据结合性决定求值顺序。 结合性 左结合“从左到右 ”,运算对象先与左边的运算符相结合 右结合“从右到左”,运算对象先与右边的运算符相结合 见附录 IIIP375 3 数据类型 1 操作数同类型运算结果保持同类型; 操作数不同类型将精度低的转换为精度高的类型 2 转换方式 自动转换方式 强制类型转换 格式 类型名 表达式 (类型名)是单目运算符,优先级较高 对表达式进行类型转换,一定加括号 例 int a,x;float y; x12;y38.5; ayx; /*非法 */ aintyx; 四 自增、自减运算符 自增 使变量的值加 1 --自减 使变量的值减 1 i i 加 1,再返回 i 的值 i 返回 i 的值,然后 i 加 1, --i i 减 1,再返 i 的值 i-- 返回 i 的值,然后 i 减 1 例 int i3,j; ji; ji; i 和 j 的值为几 注意 1 , --,只能用于变量,如 6、( ab) 等都是非法的 2 , --结合方向从右到左,如 -x 若是左结合性就是非法的 3 , --会带来副作用,如 xxx 设 x 的值为 3,表达式的值为几(其他的见书 p58) 精品 Word 文档,知识共享 3.10 赋值运算符和赋值表达式 一 简单的赋值运算符 1 左操作数必须是 变量 2 赋值运算符为 右结合性 二 赋值运算中的类型转换 赋值运算符左右两边的类型通常要一致;若不一致,系统会自动处理 1实型赋给整型,截去小数部分; 2整型赋给实型,数值不变,以浮点形式存储 3字符 赋给整型 三 复合赋值运算符 op op 是算术运算符或位运算符 , -, *, /, , printf“d,d,d“,a,b,c,b,c;