




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据类型(Data Type)数据为什么要区分类型?不同类型的数据代表不同的数据表示形式合法的取值范围占用内存空间大小可参与的运算种类 第1页,共37页。数据类型(Data Type)字符类型char整型int、long、short基本类型实型单精度型float浮点型双精度型double数据类型枚举类型enum数组类型 构造类型结构体类型struct共用体类型union指针类型*空类型void第2页,共37页。基本数据类型int整数,在目前绝大多数机器上占4个字节TC中是2个字节VC中是4个字节float单精度浮点数,一般是4个字节长double双精度浮点数,一般是8个字节长char字符,一般
2、是1个字节长用来表示256个ASCII字符,或者0255的整数第3页,共37页。基本数据类型shortshort int,短整数,一般2个字节长,通常简写为short。longlong int,长整数,一般是4个字节长。通常简写为long。long double,长双精度(高精度)浮点数,一般是10个字节。signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数),通常情况下该修饰符缺省。unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)。第4页,共37页。何谓类型溢出(Overflow)C语言直接
3、提供的任何类型都有取值范围。当向其赋超过此范围的数值,就会产生数值溢出,得到一个不正确的结果。TC中int的范围是-3276832767如果超出取值范围,给它一个小于-32768或者大于32767的数会如何呢?现场编程测验小蛇能吞下大象吗?typeoverflow.c第5页,共37页。常量是指在程序运行中,其数值不能被改变的量直接常量(常数)数值常量整型常量实型常量字符型常量字符常量字符串常量符号常量标识符定义第6页,共37页。整型常数int型常量:18、-31(十进制)long int型常量: 123456L、 123456l、123L、123lunsigned int型常量:123u、12
4、3U八进制常量:以数字0开头的整数例如:012=1*81+2*80=10(十进制)十六进制形式:以0 x开头的整数例如:0 x12=1*161+2*160=18(十进制)第7页,共37页。实型常数十进制小数形式:123.45、456.78指数形式:1e-2、4.5e3float型常量:123.45f、 456.78F、1e-2f、4.5e3Flong double型常量:123.45l、 456.78L、4.5e3L缺省为double因为字母l和数字1容易混淆,所以当用l做后缀时,常使用大写形式第8页,共37页。字符常数字符常数的表示方法a,A,5,%,$单引号内只能有一个字符,除非用”开头就
5、是一个普通整数,也可以参与各种数学运算每个字符具有一个0255之间的数值,可从ASCII表查出注意:5和5有本质的区别字符的数学运算在密码学内用得比较多用”开头的字符为转义字符例如:”n”,代表1个字符,其含义是换行第9页,共37页。转义字符一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示。第10页,共37页。字符串String常数用双引号括住的由零个或多个字符组成的字符序列I am a string表示空字符串转义字符也可以在字符串中使用引号只作为字符串开始和结束的标志C语言内部用0表示字符串的结束除注释外,是唯一可以出现中文的地方x和x是不同的里定义了一系列专门的字符串处理函数第1
6、1页,共37页。符号常量含义:用标识符定义一个常量,也叫做宏常量,通常用大写字母表示。一旦某个标识符被定义成为一个常量后,以后在程序处理时,该标识符都代表对应的常量值。定义格式:#define 标识符 常量数据#define MAX 1000#define MIX 10#define PI 3.14第12页,共37页。计算圆的周长和面积prg2-2.c#include void main()printf(“circumference = %fn”, 2*3.14*3.5);printf(“area = %fn”, 3.14*3.5*3.5);第13页,共37页。计算圆的周长和面积prg2-2.
7、c#include #define PI 3.14#define R 3.5void main()printf(“circumference = %fn”, 2*PI*R);printf(“area = %fn”, PI*R*R);第14页,共37页。变量是指以标识符为名字,其值可以改变的量定义形式:类型标识符 变量名1, 变量名2, 变量名3; 类型标识符:如int、float、char等变量名:程序员自行确定,符合标识符命名规则即可,约定做到见名知意习惯用下划线和大小写间隔的方式命名标识符user_name:Unix风格UserName:Windows风格变量定义是语句,分号一定不能缺少第
8、15页,共37页。变量定义int a,b,c;int a; int b; int c;float m,n;char s,t;在C语言程序中,变量必须“先定义,后使用”。变量定义主要是指出变量的名字,确定变量的数据类型。在同一个程序段中,变量不能被重复定义。注意!第16页,共37页。变量赋值变量定义后只是按照类型分配了所需的存储空间,但是没有具体的值。变量初始化:第一次给变量赋值的过程,这个值称为变量的初值。先定义再赋值int a;a=2;定义的同时赋值int a=2;第17页,共37页。变量赋值int a,b,c;a=b=c=3;可以等价为int a=b=c=3;变量初始化后可以再次赋值(即修
9、改变量的值),但是一个变量任何时刻只能有一个值。int a=5;/变量a初始化赋值为5a=12;/变量a的值赋值为12,即发生修改赋值操作是从右向左进行的变量定义的同时不能连续初始化注意!第18页,共37页。算术运算符+、-、*、/、%(求余):双目运算符%运算左右两数必须为整型数据5%3=_,6.2%3=_两个整数相除,结果自动取整(向零取整)5/3=_参加运算的两个数中有一个为实数,结果为double型x为double型,y为int型,则x+y的类型的为_字符型数据可以和数值型数据混合运算6+A=_第19页,共37页。*自增、自减运算符单目运算符,也叫做一元运算符使变量的值在当前基础上加1
10、/减1i+/i-:先使用变量i的值,i值再加1/减1+i/-i:i值先加1/减1,再使用变量i的值int x = 3, m, n;m = x+;n = +x;执行后m、n、x的值各是多少?(1) +i和i+,其本质都可以使i值加1,-同理。(2) +i和i+,求值和使用的先后顺序,-同理。注意!第20页,共37页。*自增、自减运算符m = x+;m = x;x = x + 1;n = +x;x = x + 1;n = x;第21页,共37页。关系运算符,=, b & b c):a大于b并且b大于c或运算|a | b,只要两者中有一个为真,结果就为真( a b | b c):a大于b或者b大于c
11、非运算!a,如果a是0,结果非0;如果a是非0,结果是0并不改变a的值第23页,共37页。逻辑运算符prg2-3.c#include void main()int a = 10, b = 20, c = 30, d;d = +a = 20 | c+;printf(a = %d, b = %d, c = %d, d = %dn,a,b,c,d);注意!逻辑运算的短路特性第24页,共37页。实例判断某一年year是否是闰年的条件是满足下列两个条件之一:能被4整除,但不能被100整除;能被400整除;请用C语言运算符和表达式正确描述上述闰年的条件。(year % 4 = 0) & (year % 1
12、00 != 0) | (year % 400 = 0)第25页,共37页。赋值运算符赋值运算符=:将一个数据赋给一个变量赋值表达式: 可以是常量、变量或者表达式int a,b=5,m=7,n=8;a=b;a=m+n;优先级:赋值运算符优先级低于算术运算符、关系运算符和逻辑运算符结合性:右结合性第26页,共37页。复合赋值运算符在赋值运算符“=”之前加上其他运算符,构成复合赋值运算符。复合赋值表达式 x += 5;x *= y+8;x %= 3;x -= y;x = x + 5;x = x * (y+8);x = x % 3;x = x - y;第27页,共37页。逗号运算符一般形式:表达式1,
13、 表达式2求解过程先求解表达式1的值,再求解表达式2的值。整个逗号表达式的值是表达式2的值。扩展形式:表达式1, 表达式2, , 表达式nint x,y=5;x=(y=y+6,y=y/3);则x的值为_(1) 先计算y=y+6的值,y=5+6,y值为11。(2) 再计算y=y/3的值,y=11/3,y值为3。所以变量x的值为3。第28页,共37页。条件运算符一般形式: ? : 运算顺序先求解表达式1的值。如果表达式1的值为真,则求解表达式2的值并把它作为整个表达式的值。如果表达式1的值为假,则求解表达式3的值并把它作为整个表达式的值。第29页,共37页。实例1今天我要出门办事,因为需要外出一整
14、天而这段时间又是多雨的季节,所以我要考虑是否需要携带雨伞。我的判断依据是出门时天阴带伞,反之不带伞。请用条件表达式描述上述判断原则。分析:外出时有两种选择带伞或不带伞,其判别依据为是否天阴。条件表达式描述如下:天阴 ? 带伞 : 不带伞第30页,共37页。实例2已知符号函数映射关系如下:请用条件表达式给变量y赋值。y = (x = 0) ? (x 0) ? 1 : 0) : -1第31页,共37页。实例2y = (x = 0) ? (x 0) ? 1 : 0) : -1表达式2:(x 0) ? 1 : 0表达式1表达式2表达式3表达式1表达式2表达式3第32页,共37页。求字节运算符一般形式s
15、izeof(变量名):返回变量的字节长度sizeof(类型名):返回类型的字节长度求出的结果为变量或者类型占用的字节数。为什么要用sizeof获得类型或变量的字长?第33页,共37页。求字节运算符prg2-4.c#include void main()printf(Data type Number of bytesn);printf(- -n);printf(char%dn, sizeof(char);printf(int%dn, sizeof(int);printf(short int%dn, sizeof(short);printf(long int%dn, sizeof(long);printf(float%dn, sizeof(float);printf(double%dn, sizeof(double);VC编译器TC编译器第34页,共37页。运算符的优先级( ) - .! + - + - * & (类型) sizeof* / %+ - = !=&|&|? := += -= *= /= %= &= = |= =,第35页,共37页。自动类型转换同种数据类型的运算结果,还是该类型不同种数据类型的运算结果,是两种类型中取值范围更大的那种doubl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论