第三章第1节 第三章数据类型、运算符与表达式 §31C的数据类型 程序=数据结构(描述)+算法 C程序中通过定义数据类型来实现 整型 整数 基本类型 字符型 单个字符 实型(浮点型) 单精度 带小数的 双精度数据 枚举类型 C语言的 数组类型 数据类型构造类型结构体类型 共用体类型 指针类型 空类型
第三章 第1节 程序= 数据结构(描述)+ 算法 C程序中通过定义数据类型来实现 整型 → 整数 字符型 → 单个字符 实型(浮点型) → 单精度 双精度 枚举类型 带小数的 数据 数组类型 结构体类型 共用体类型 指针类型 空类型 基本类型 构造类型 C语言的 数据类型 §3.1 C的数据类型
§32常量和变量 第三章第2节 C的数据 常量 变量 一,常量和符号常量 1.常量—在程序运行过程中,值不变。 常量有不同的类型 整形 3.1416.2.0 实型 A 符型 2.符号常量—用符号(标识符代表一个常量 如:n3.1416→在计算机中PI=3.1416注:必须先定义后使用 例子:求圆的面积 define pi 3. 1416 错符号常量不能改变 main 不能再赋值 float d, area; scanf(“%f,&d); PI3.1415926; area=Pldd/ 4.0 printf("area=9:e;惯上:符号常量用大写变量用小
第三章 第2节 §3.2 常量和变量 C的数据 常量 变量 一 . 常量和符号常量 1 . 常量——在程序运行过程中,值不变。 常量有不同的类型 0 , -1 , 5 整形 3.1416, 2.0 实型 ‘a’ , ‘A’ 字符型 2 . 符号常量——用符号(标识符)代表一个常量 如: π=3.1416 → 在计算机中 PI=3.1416 注: 必须先定义后使用 例子: 求圆的面积 # define PI 3.1416 main( ) {float d,area; scanf(“%f”,&d); area=PI*d*d/4.0; printf(“area=%f”,area); } PI=3.1415926; 错!符号常量不能改变, 不能再赋值 习惯上: 符号常量用大写, 变量用小 写
第三章第2节 二变量—在程序运行过程中,值可以改量的量 变量名 变量的名字→对应该变量在内存中的单元地址 变量的值→变量的数据→存放在变量对应的内存单元中 整型变量 Intx 2Byte 地址号 201 200 首地址 变量名x 00.010→2→x的值 变量的命名 1)只能用字母(注:大、小写不同义,一般用小写)、下划线、数字 组成。如:x1,sum,nag,x1 2)第一个字符必须是字母或下划线。 法 sum A above 不合法:ZQ,$1,2a 3)字符的个数无统一规定,不同的系统有所差别,多数系统取8个, 般以不超过8个字符为宜
第三章 第2节 二. 变量——在程序运行过程中,值可以改量的量 变量名 → 变量的名字 → 对应该变量在内存中的单元地址 变量的值 → 变量的数据 → 存放在变量对应的内存单元中 整型变量 → int x 0 0 ... 0 0 ... 0 1 0 201 200 2Byte 地址号 首地址 变量名x 00...010 → 2 → x的值 变量的命名 1)只能用字母(注:大、小写不同义,一般用小写)、下划线、数字 组成。 如:x1, sum, _flag, x_1 2) 第一个字符必须是字母或下划线。 合法:sum, A , _ above 不合法: Z.Q , $1, 2a 3) 字符的个数 无统一规定, 不同的系统有所差别, 多数系统取8个, 一般以不超过8个字符为宜
第三章第2节 4)命名时,尽量与所表示的物理量有一定联系,便于阅读。 如: 面积用area 不用 直径用 diameter不用d 5)要先定义,后使用 s33整型数据 第三章第3节 整型常量 即:整数 三种书写形式 1.十进制整数 12,025 2.八进制整数以0开头书写 如:012→(12)8-81×1+80×2=(10)10 012→(-12)8-(-10) 注:0是数字不是字母 018 的什么? 3.十六进制整数以0x开头书写 如:0x12→(12)16→161×1+160×2=(18)o 0Xx1a→(1a)6→161×1+16×10=(26)n0 注:没有二进制的形式!!!
第三章 第2节 4) 命名时,尽量与所表示的物理量有一定联系,便于阅读。 如: 面积 用area 不用 s 直径 用diameter 不用 d 5) 要先定义,后使用 §3.3 整型数据 —— 即:整数 第三章 第3节 一 . 整型常量 三种书写形式 1. 十进制整数 12, 0 -25 2. 八 进制整数 以0开头书写 如:012 →(12)8 →81×1+80×2=(10)10 - 012 →(-12)8 →(-10) 10 018 为什么? 3. 十六进制整数 以0x开头书写 如:0x12 →(12)16 →161×1+160×2=(18)10 0x1a →(1a)16 → 161×1+160×10=(26)10 注: 没有二进制的形式!!!! 注: 0是数字,不是字母
第三章第3节 整型变量 代表整数的变量 1.整型变量的分类 范围大1)基本型 int 有符号数,前面可加 小不同12)短整型 chort int (short) “ signed,如: signed int 3)长整型 ong int(ong))等 4)无符号型 1)无符号基本型 unsigned int 2)无符号短整型 unsigned short 3)无符号长整型 unsigned lon 含义:最高位不表示“+”“”,而为数值本身 如:1000.001rint (-111.11)=-(214+2134+.+20)=-32767 16位 unsigned int 215+1=32768 故:a)无符号型变量一般不能放负数 b)无符号数比同类的整型变量存放正整 又是为什么? 数的范围扩大一倍
第三章 第3节 二 . 整型变量 —— 代表整数的变量 1 . 整型变量的分类 1) 基本型 int 2) 短整型 short int (short) 3) 长整型 long int (long) 4) 无符号型 1)无符号基本型 unsigned int 2)无符号短整型 unsigned short 3)无符号长整型 unsigned long 有符号数 , 前面可加 “ signed”, 如: signed int 等 含义: 最高位不表示“+”“-”, 而为数值本身 如: 1000....001 int (-111....1111)原= -(214+213+...+20 )= -32767 16位 unsigned int 215 + 1=32768 故: a) 无符号型变量一般不能放负数 b)无符号数比同类的整型变量存放正整 数的范围扩大一倍 又是为什么?? 范围大 小不同
第三章第3节 2.整型变量存放数的范围 整型变量在内存中占多少字节无统一规定,一般: 个字长 longing≥ short PC机 int 16位2Byte 215-1(-3276832767) short 16位2Byte-215215-1(-3276832767) long 32位4Byte-232232-1(正负21亿多) unsigned int16位2Byte0216-1(0—65535) 3.整型变量的定义 格式: 类型说明符变量列表 如 unsigned long sum 说明:1)一般放在函数开头; 2)命名与定义类型同时进行; 3)编译、运行时,C系统根据定义自动分配变量存储的内在空间;
3 . 整型变量的定义 第三章 第3节 格式: 如: int x, y, z; unsigned long sum; 说明: 1)一般放在函数开头; 2)命名与定义类型同时进行; 3)编译、运行时,C系统根据定义自动分配变量存储的内在空间; 2 . 整型变量存放数的范围 整型变量在内存中占多少字节无统一规定,一般: 一个字长 int long≥int ≥ short PC机: int 16位 2Byte -2 15——2 15-1(-32768——32767) short 16位 2Byte -2 15——2 15-1(-32768——32767) long 32位 4Byte -2 32——2 32-1(正负21亿多) unsigned int 16位 2Byte 0——2 16-1 (0——65535) ....... 类型说明符 变量列表;
第三章第3节 4)注意整型量的数值范围,避免溢出。参见P44,例44 maino f int a, b,c a=32767 问:求10!,应该定义何种类型 printf( a, b=%d, %d,", a, b) 结果:a,b=32767,32768 4.整型常量的类型 整型常量的类型与其数据大小有关 1)如大小范围介于-21525-1(-3276832767),则为:int 2)如大小范围介于-232282-1,则为: long int。 3)如系统的 short int与int长度相同,则int→ short相同。 4)常数后加u,则为 unsigned类型(按无符号类型处理) 例12345u ∵为正整数,∴与int相似 010000 12345u 12345
第三章 第3节 4)注意整型量的数值范围,避免溢出。 参见P44,例4.4 main() { int a,b,c: a=32767; b=a+1; printf(“a,b=%d,%d”,a,b) } 结果: a,b=32767,-32768 4. 整型常量的类型 整型常量的类型与其数据大小有关 1) 如大小范围介于-2 15——2 15-1(-32768——32767), 则为: int。 2)如大小范围介于-2 32——2 32-1,则为: long int。 3)如系统的short int 与int长度相同, 则int short相同。 4)常数后加u , 则为unsigned 类型(按无符号类型处理) 例 12345u ∵为正整数, ∴与int相似 00110000 00111001 12345u 12345 问: 求10!,应该定义何种类型
第三章第3节 12345u对于符号,∵为无符号数,∴符号要当成数值处理 -12345的补码 12345 0011000000111001 001111110011 无符号类型处理 215+214+21++20=53191 5)常数后加L(1),则为 long int类型
第三章 第3节 -12345u 对于符号,∵为无符号数, ∴符号要当成数值处理 5).常数后加L(l) , 则为long int 类型 00110000 00111001 12345 11001111 11000111 -12345的补码 2 15+214+211+ ...+20=53191 无符号类型处理
第三章第4节 §34实型数据 实型常量的表示方法 1.十进制数形式 0.123123.0 2.指数型式 123.0—→1.23E2或者1.23e2 注意:1)书写时,E(e)前面必须有数字 E(e)后面必须为整数 2)规范的指数形式 输出时,自动转换为口.e囗囗■ 非零 二实型变量 存放实型数的变量 1分类 类型符空间长度有效位数 范围 单精度型 float4Byte6~7位 士(1037~1038 双精度型 double8Byte15~16位 ±(10307~10308 长双精度1 ong double10Byte18~19位±(10-491-10492) 实型量无 unsigned类型
第三章 第4节 §3.4 实 型 数 据 一.实型常量的表示方法 1. 十进制数形式 0.123 123.0 2. 指数型式 123.0 1.23E2 或者1.23e2 注意: 1)书写时, E(e) 前面必须有数字 E(e) 后面必须为整数 2)规范的指数形式 输出时,自动转换为 . ... e 非零 二.实型变量 ——— 存放实型数的变量 1.分类 类型符 空间长度 有效位数 范围 单精度型 float 4 Byte 6~7位 ±(10-37 ~1038) 双精度型 double 8 Byte 15~16位 ±(10-307 ~10308) 长双精度 long double 10 Byte 18~19位 ±(10-4931 ~104932) !!! 实型量无unsigned类型
第三章第4节 2实型变量的定义 格式:类型说明符变量表 如: float a,b,c; ong rel; 3实型数据在内存中的存放形式—按“浮点方式” 如:foat占4字节 阶码 尾数 表示的数值:2×尾数 阶码决定了数值的大小范围 尾数决定了数值的精度(有效位的多少 三实型常量的类型 不分类型,可分别赋给foat或 double,根据变量的类型取相应的有效位 如: float a; 实际上a=1111 a=1lll11.1l1; →7位 9位
第三章 第4节 2 .实型变量的定义 格式: 如: float a,b,c; long rel; 如:float 占4字节 阶码 尾数 表示的数值: 2 阶码×尾数 阶码 决定了数值的大小范围 尾数 决定了数值的精度(有效位的多少) 3.实型数据在内存中的存放形式 —— 按 “浮点方式” 三.实型常量的类型 不分类型,可分别赋给float 或double, 根据变量的类型取相应的有效位 如: float a; a = 111111.111; 实际上 a = 111111.1 7位 9位 类型说明符 变量表;