[工学]第3章 数据类型_运算符与表达式

上传人:tia****nde 文档编号:70513931 上传时间:2019-01-17 格式:PPT 页数:60 大小:332.31KB
返回 下载 相关 举报
[工学]第3章 数据类型_运算符与表达式_第1页
第1页 / 共60页
[工学]第3章 数据类型_运算符与表达式_第2页
第2页 / 共60页
[工学]第3章 数据类型_运算符与表达式_第3页
第3页 / 共60页
[工学]第3章 数据类型_运算符与表达式_第4页
第4页 / 共60页
[工学]第3章 数据类型_运算符与表达式_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《[工学]第3章 数据类型_运算符与表达式》由会员分享,可在线阅读,更多相关《[工学]第3章 数据类型_运算符与表达式(60页珍藏版)》请在金锄头文库上搜索。

1、用计算机解决实际问题要借助数学模型,即要把问题化成对数据的处理。不同的问题需要不同的数据类型,不同的数据类型有不同的存储方式,并且,允许的运算也不同。,第3章 数据类型、运算符与表达式,3.1 C的数据类型 一、 C语言数据类型 C语言提供了丰富的数据类型,除了空类型外,C语言的数据类型可分成三类,具体情况如下图表示: 由这些数据类型还可以构成更复杂的数据结构。,短整型(short) 整型 整 型(int) 数值类型 长整型(long) 基本(简 实型 单精度型(float) 单)类型 双精度型(double) 字符类型(char) 枚举类型(enum) (第11章介绍) 数组类型 (第7章介

2、绍) 数据类型 构造类型 结构体类型(struct) (第11章介绍) 共用体类型(union) (第11章介绍) 指针类型 (第10章介绍) 空类型(void),二、数据类型的使用 1、计算机中存储和运算的数据都有一定的类型 (1)常量的类型:由常量的形式确定。例如1234是整型,13.89是实型等。 (2)变量的类型:必须在程序的说明部分定义,即“先定义、后使用” 2、程序设计应综合考虑算法和数据结构(数据类型),3. 2 常量与变量 3.2.1常量:在程序运行过程中其值保持不变的量,可分为: 1、直接(字面)常量:直接表示的常量。如12、0、-3为整型常量,4.6、-1.23为实型常量,

3、a、3为字符常量等。,2、符号常量:用标识符表示的常量 (1)用法:用预编译命令#define 定义(习惯用大写字母组成的标识符表示),如: #define PI 3.14159 (2)定义符号常量的好处: 意义明确 便于统一修改 例3.1 (P39),3.2.2 变量:在程序运行过程中其值可变的量。 一、变量的三个要素:变量名、变量的存储单元和变量的值 (1)变量名:用标识符表示,其中字母一般用 小写字母。 变量名的作用: 代表内存中相应的存储单元 代表该存储单元存储的数据。 (2)变量存储单元的地址: 地址用“&变量名”(如&a、&b等)表示。,二、定义变量的类型:变量必须先定义然后才能使

4、用 1、变量类型的意义 (1)变量的类型意味着: (2)不同数据类型操作的结果可能不同 如:1/3的值为0(整数操作) 1.0/3.0的值为0.333333(实数操作) 2、变量定义语句: 类型 变量名=初值,变量名=初值,;,例如: char ch1,ch2;/*定义(有符号)字符型变量ch1,ch2*/ int i, j, k; /*定义(有符号)整型变量i,j,k */ float a, b, c; /*定义单精度实型变量a,b,c */ double d, e; /*定义双精度实型变量d,e */ 注意:在一个函数中,不能把一个变量声明成两个或 两个以上类型。 在定义变量的同时可以给变

5、量赋初值,如: int i=3, j=-4, k; char ch1=a, ch2=5; float a=1.5, b=0.0, c; double x, y, z=-25.5;,3. 3 整型数据 引言:整型数据的分类 1、按在内存中的长度(二进制位)分: (1)基本整型,以int表示 (2)短整型,以short int表示,在微机中与int型相同,都是16位二进制数,short型较少使用。 (3)长整型,以long int表示,在微机中是32位二进制数。,2、按有无符号分:有符号(signed)和无符号(unsigned)两种 因此,整型数据共有6种: 有符号基本整型signed int

6、无符号基本整型unsigned int 有符号短整型 signed short int 无符号短整型 unsigned short int 有符号长整型 signed long int 无符号长整型 unsigned long int,3.3.1 整型常量的表示方法 1、十进制整型常量 (1)int(或short)型常量:如32767, 0, -56, -32768 (2)无符号整型常数后加u或U,如65535u,12345U等 (3)有符号长整型常数后加l或L,如345678l,-12L等 (4)无符号长整型常数后加lu或LU,如345678lu,35LU等 长整型表示虽然只是在整数之后增加

7、l或L,但占用内存4个字节(32位)。,2、八进制整型常量:用数字0开头,如0177777,0273等(注意不能出现大于7的数字,长整型加后缀l或L) 3、十六进制整型常量:用0x(或0X)开头,如0x123, 0Xde, 0X2A等(注意字母不能超过f或F,长整型加后缀l或L),3.3.2整型变量 一、整型数据在内存中的存放形式:按有符号和无符号情况不同 1、无符号整型数据(对基本整型、短整型和长整型):各二进制位均表示数值 如unsigned型数据0的二进制存放为 0000 0000 0000 0000, 二进制存放为1111 1111 1111 1111 十进制数为216-1=65535

8、,2、有符号整型数据(对基本整型、短整型和长整型)的存储:用补码表示。 原因:解决计算机不能直接表示负数的问题(补码为正数) 特征:最高位为0为正整数,最高位为1表示负整数 (1)补码计算公式(以16位存储为例,微机的int型和short型): a (0a32767) a的补码 = 216-|a| (-32768a0),例如: 整数0存储为 0000 0000 0000 0000 正数1存储为 0000 0000 0000 0001 最大正数32767存储为 0111 1111 1111 1111 -1存储为 1111 1111 1111 1111 -2存储为 1111 1111 1111 1

9、110 -32768存储为 1000 0000 0000 0000,(2)负数补码的求法:可用上式计算(写成二进制),也可用如下方法求出: 将|a|写成二进制形式 各位取反(1变成0,0变成1)后加1 原理:216-|a|=(216-1)-|a|+1=|a|+1 例如-5,将5写成二进制数 0000 0000 0000 0101 各位取反为 1111 1111 1111 1010 再加1即为-5的补码 1111 1111 1111 1011 (1111 1111 1111 1011 =1111 1111 1111 1111-100=216-1-4=216-5) 可见1111 1111 1111

10、 1111=216-1为-1的补码 1000 0000 0000 0000=215=216-215=215=32768为-32768的补码(-32768是最小的整数),(3)由负数的补码求十进制负数,可按上面相反的步骤进行: 将该补码减1后各位取反,写成十进制数即是该数的绝对值,如: 1111 1111 1111 1011减1为 1111 1111 1111 1010,各位取反为 0000 0000 0000 0101即为-5的绝对值,因此补码1111 1111 1111 1011对应的十进制负数即为-5 3、整型数据的取值范围:P43表3.1,二、整型变量的分类与定义 1、分类:按引言分成6

11、类 2、定义:用引言的6种类型标识符定义,如: int a; /*定义有符号基本整型变量a */ unsigned b; /*定义无符号基本整型变量b */ short s1,s2;/*定义有符号短整型变量s1、s2 */ long c; /*定义有符号长整型变量c */ unsigned long d; /*定义无符号长整型变量*/ 例3.2 (P44),三、整型数据的溢出 1、原因 (1)由于存储的位数有限,大于存储范围的数将溢出 (2)由于有符号的数用补码表示,补码变到表示负数范围将表示负数 2、溢出的计算(以16位存储为例,长数据存储为整型时将只保留低16位,即以216为模) (1)无

12、符号整数的溢出:以216(即65536)为模求得余数即溢出结果 (2)有符号整数的溢出 a、正数:以216(即65536)为模求得余数,余数为溢出后数的补码(因此可为正数也可为负数)。 b、负数:加216的倍数,使结果a在 32768=a=32767范围,此即溢出后的数。,例3.3(P44) 补充例: main( ) int a, b, c; unsigned u; a=32767+1; b=131071; c=-131071; u=131071; printf(“a=%d,b=%d,c=%d,u=%un”,a,b,c,u); 运行结果为: a=-32768,b=-1,c=1,u=65535,

13、3. 4 实型数据 3.4.1实型常量(通常带小数点或指数,只能用十进制表示) 1、小数形式(必须有小数点),如:0.123, -12.3, 0.0, 123. ,.5等 2、指数形式,由数值部分和指数部分(e或E加正负整数)组成,例如: 0.23e5 表示0.23105 -12.345E0 表示-12.345100 10e-5 表示1010-5,注: (1)无数值部分或指数部分为小数或指数部分仅有e而无整数,如e3, 3e1.2,1.0e等都是错误的 (2)由于指数形式写法多样小数点浮动, 如 3.14159可表示为: 0.0314159102 C语言表示为 0.0314159e+2 314

14、1.5910-3 3141.59e-3 因此实数又叫浮点数。 其中有一位非零整数的叫科学记数法(又叫规范化指数形式,也是输出的标准形式),如:1.2345e2, 输出为:1.234500e+2,3.4.2实型变量 1、实型数据的类型与变量的定义 (1)单精度实型(float型),32位(4字节)存储; (2)双精度实型(double型),64位(8字节)存储; (3)长双精度实型(long double型),128位(16字节)存储,用得较少。 用这些类型标识符即可定义相应的变量,如: float x, y; /*定义单精度变量x、y*/ double z; /*定义双精度变量z*/ long

15、 double t; /*定义长双精度变量t*/,2、实型数据在内存中存放的形式,以float型为例: 例如,float型的实数-32.286e-38的存储情况为: 符号位 规格化的尾数 阶符位 阶码 微机中实型数据的取值范围:P46表3.2 3、实型数据的舍入误差:由于实型有一定精度范围,实型数据是有误差的,如:4.0/3.0*3.0不等于4.0,然而整数是没有误差的。 例3.4(P47),3.4.3实型常量的类型 1、参加运算时一般作为double型数据 2、给变量赋值时按变量的类型进行转换,3. 5 字符型数据 3.5.1字符常量 1、可见字符:加单引号表示,如a、A、5、!等。 注意: (1)单撇号中只能是一个字符,abc是错误的; (2)只能用单撇号而不能用双撇号,“a“是错误的(“a“表示一个字符串); (3)空格也是一个字符, 与连续的两个单撇号 (表示无字符)不同; (4)反斜杠和单、双撇号字符不能表示为: 和 、“,而应表示为转义字符 和、”。,2、转义字符:用加1-3个字符组成(P48表3.3) (1)控制字符,如n、t等 (2)用ASCII码表示字符,可以表示任何字符,包括不能用键盘输入的扩展ASCII码字符 a、八进制ddd(一到三位八进制数ddd前可加0或不加0), 如:101=A,12=n,0362= b、十六进制xhh(x不能大写

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号