C语言数据类型、运算符与表达式.ppt
《C语言数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《C语言数据类型、运算符与表达式.ppt(144页珍藏版)》请在三一办公上搜索。
1、第3章 数据类型、运算符与表达式,第3章 数据类型、运算符与表达式,本章要点C语言的基本数据类型常量和变量运算符以及表达式的含义和求值常用库函数的使用,第3章 数据类型、运算符与表达式,3.1 C语言的数据类型3.2 常量3.3 简单变量3.4 库函数3.5 运算符和表达式,3.1 C语言的数据类型,整型 int 基本类型 浮点型 float、double 字符型 char 枚举类型 enum 数组类型 以 为标志 构造类型 结构体类型 struct 联合类型 union 指针类型 以*为标志 空类型 void,C语言的数据类型,3.1 C语言的数据类型,数据类型的取值范围不同的数据类型在内存
2、中占用不同的存储空间,取值范围也不同。即使是相同类型的数据在不同种类的计算机中所占的存储空间也不完全相同。,3.2 常量,常量的定义常量又称为常数,是指在程序运行中,其值不能被改变的量。常量的类型整型常量浮点型常量字符常量字符串常量符号常量,3.2.1 整型常量,整型常量是由一个或多个数字组成,可以有正、负号,但不能有小数点。三种表示方法:十进制表示:如 123、-456八进制表示:以数字0开头。如 0123、-012十六进制表示:以0X或0 x开头。如 0 x2F、-0 x4A,3.2.1 整型常量,长整型:在数字后加上字母L或l。例如:10L是十进制的长整型常量。无符号数:在数字后加上字母
3、U或u。例如:345U是十进制无符号整型常量。无符号长整型:L和U可以同时使用,顺序任意。例如:78LU表示无符号长整型。,3.2.1 整型常量,整数在机内的存储形式在大多数机器中,整数采用补码的形式来存储。在Turbo C中使用2个字节存储一个整数。例如,10在内存中的存放形式:-10在内存中的存放形式:,3.2.2 浮点型常量,两种表示形式:十进制数形式:由正负号、整数部分、小数点、小数部分组成。如:12.3、.34、12.、0.0指数形式:由正负号、整数部分、小数点、小数部分和字母E或e后面带正负号的整数组成。如:1.23E3 表示 1.23*103注意:(1)字母E或e之前必须有数字;
4、(2)字母E或e之后必须是整数。例如,E5、9.8E2.3 都是不合法的。,3.2.2 浮点型常量,浮点型常量默认的是double型(双精度)。单精度:在实型常量后面加上字母F或f。例如:1.23F、3.5e2F实数在机内的存储形式实数在机内以指数形式存储。大多数C编译系统使用4个字节存储float型(单精度)数据。小数部分和指数部分分别占多少位,ANSI C没有作规定,由具体的C语言编译系统自定。,3.2.3 字符常量,字符常量是由一对单引号括起来的单个字符如:a,0,%字符常量的值是该字符对应的ASCII值,在内存中的存储形式与int型一样。注意:单引号中的字符只能是一个字符。字符0与数字
5、0是不同的。C语言中还允许使用以反斜杠字符“”开头的转义字符表示特殊字符。,3.2.3 字符常量,常用的转义字符0 表示字符串结束(ASCII值:0)n 换行,将光标移到下一行的开头(ASCII值:10)t 水平制表(ASCII值:9)b 左退一格(ASCII值:8)r 回车,将光标移到当前行的开头(ASCII值:13)单引号(ASCII值:39)双引号(ASCII值:34)反斜线(ASCII值:92)ddd13位八进制数所代表的字符xhh12位十六进制所代表的字符,main()printf(abtcdn);printf(12345678012student x42n);,运行结果:ab cd
6、12345678student B,【例3.1】转义字符的使用,3.2.4 字符串常量,字符串常量是由一对双引号括起来的字符序列。如:A、123.45字符串常量在内存中存储时,系统自动加上串尾标记0。若字符序列串长为N,则在内存中占用N+1个内存单元。,3.2.4 字符串常量,注意:A与A是完全不同的。A是字符串常量,占2个字节长度,在内存中的存储形式如下:A是字符常量,占1个字节长度,在内存中的存储形式如下:,A,0,A,3.2.5 符号常量,符号常量:用一个特定的标识符来代替一个常量或字符串。定义形式:#define 标识符 常量或字符串例如:#define PI 3.14159#defi
7、ne NULL 0优点:增强可读性增强程序的通用性和可维护性,3.2.5 符号常量,说明:#define是预编译命令,在编译之前用对应的常量或字符串替换程序中的标识符,然后再编译程序。该定义必须放在程序的开头。每一个符号常量的定义都必须独占一行,因其不是语句,故尾部不用加分号。为了与变量区分,一般符号常量用大写字母表示。,#define PI 3.14159main()float r=2,c,s;c=2*PI*r;s=PI*r*r;printf(c=%f,s=%fn,c,s);,【例3.2】计算圆的周长、面积,说明:当开始编译前,系统先将程序中所有的PI 这个符号替换成 3.14159,然后再
8、进行编译(翻译成二进制)。,#define X 10-7main()int a;a=3*X;printf(a=%dn,a);,【例3.3】阅读程序,判断运行结果。,运行结果:a=23,3.3 简单变量,3.3.1 变量的命名变量的定义变量是指在程序运行过程中其值可以被改变的某个标识符。变量的特征:变量名、变量值、变量类型、变量的存储地址、变量的存储属性。变量名:要求取为合法的标识符。通过变量名,可以得到数据存储在内存中的地址。一般使用小写字母表示变量名。在编译连接时,编译系统会给每个变量分配一个内存单元,变量的值就存储在该内存单元中。,3.3.1 变量的命名,标识符的定义在C语言中,对变量、符
9、号常量、函数、宏、标号、文件名等的命名的有效字符序列称为标识符。标识符的命名规则可以由字母、数字和下划线组成必须由字母或下划线开头严格区分大小写字母不能使用关键字和系统预定义标识符长度不超过8个字符,3.3.2 变量的基本数据类型,变量的数据类型每个变量都必须有一个确切的类型和具体的值。变量的数据类型决定了该变量的取值类型、取值范围、所占的内存空间的大小以及所能参加的运算方式等。无符号类型的数据在机内存储时,最高位不是符号位,而是数据本身的一部分。,3.3.3 变量的类型定义,无论使用哪一种类型的变量,都必须“先定义,后使用”。变量的定义格式:数据类型名 变量名表;例如:int i,j,k;注
10、意:一个变量被定义后,它的值是不确定的。,多个变量之间使用逗号间隔,3.3.4 变量的初始化,变量的初始化,就是在定义变量的同时,给变量赋初值。例如:int a;/*定义变量*/a=10;/*给变量赋值*/等价于:int a=10;/*定义变量并初始化*/,整型变量,整型变量用来存放整型数据。4种类型:基本型:int,2字节短整型:short int 或 short,2字节长整型:long int 或 long,4字节无符号型:在前3种整型类型前加unsigned在存储单元中的全部二进制位都用来存放数据本身,由于其无符号位,故不能存放负数,【例3.4】输出变量的值。,main()int i,j
11、;i=32767;j=32768;printf(i=%d,j=%dn,i,j);,运行结果:i=32767,j=-32768,说明:由于 int 型变量的取值范围为-32768 32767,因此变量 j 的赋值超出了取值范围,结果产生溢出。但系统不会报错,而是给出一个错误的结果。,为得到正确的结果,可将【例3.4】改为:,main()int i;long j;i=32767;j=32768;printf(i=%d,j=%ldn,i,j);,运行结果:i=32767,j=32768,实型变量,实型变量又称为浮点型变量,用来存储带小数点的数。3种类型:单精度型:float,4字节,有效位为67位双
12、精度型:double,8字节,有效位为1516位长双精度型:long double,16字节,有效位为1819位,实型变量,说明:实型常量不存在单精度型和双精度型之分。当为实型变量赋予一个实型常量时,C语言根据实型变量的类型来截取常量中相应的有效数字。,【例3.5】不同类型数据的输出比较。,main()float a;double b;a=123456.111;b=123456.111;printf(a=%fnb=%fn,a,b);,运行结果:a=123456.109375b=123456.111000,说明:a 是 float 型变量,能保证的有效数据为 7 位,后面的数据都是无意义的。而
13、b 是double 型变量,能接收此处所有的数据。,字符型变量,字符型变量用来存储一个字符,在内存中占一个字节。字符型变量存储的是字符的ASCII码。2种类型:基本型:char无符号字符型:unsigned char,字符型变量,注意:一个字符型变量只能存放一个字符,不能存放一个字符串。字符型数据与整型数据可以通用(前提:整型数据的高位字节是0)。字符型数据也可以进行算术运算。,【例3.6】字符型数据的运算。,main()char c1,c2,c3;int d;c1=A;c2=97;c3=c1+5;d=c2-c1;printf(c1=%d,c2=%c,c3=%c,d=%dn,c1,c2,c3,
14、d);,运行结果:c1=65,c2=a,c3=F,d=32,3.4 库函数,库函数由C语言编译系统提供的函数,称为库函数。每一种C语言编译系统都会提供一个预先编制好的函数库,这些函数可以供程序员直接调用。在ANSI C中规定了许多类型的库函数,其中最常用的有以下几种:数学函数、字符和字符串函数、输入和输出函数、动态内存分配函数。,3.4.1 库函数的使用方式,库函数的使用方式:在使用某个库函数前都应在程序开始处包含相应的头文件。#include 或#include 头文件名在程序中调用库函数。函数名(实参列表);或 变量名=函数名(实参列表);如果是调用无参函数,则没有“实参列表”。,3.4.
15、4 格式化输入输出函数,C语言提供的格式化输入输出函数的原型在头文件stdio.h中声明。在使用时应在程序头部包含stdio.h文件。#include 或#include stdio.h说明:使用格式化输入输出函数时可以省略#include命令。,3.4.4 格式化输入输出函数,格式化输出函数printf格式:printf(输出格式,输出列表);功能:按用户指定的格式,把指定的任意类型的数据显示到屏幕上。说明:输出格式由格式控制符、按原样输出的字符、转义字符三部分组成。输出列表既可以是变量名,也可以是表达式。输出列表中多个输出项之间用逗号(,)间隔。输出列表中给出的各个输出项要求与输出格式中的
16、格式字符在数量和类型上一一对应。,printf函数,格式控制符作用:将要输出的数据转换为指定格式后输出。一般格式:%修饰符格式字符说明:修饰符是可选的;当没有修饰符时,按系统缺省设定显示。,格式控制符,d格式符作用:用来输出十进制带符号整数(正数不输出符号)。%d:按整型数据的实际长度输出。%md:若%md的数据位数小于m,则左端补空格;%-md的数据位小于m,则右端补空格;若数据位数大于m,则按实际位数输出。%0md:若数据位数小于m,则左端补数字“0”;若数据位数大于m,则按实际位数输出。%ld:输出长整型数据。%hd:输出短整型数据。,格式控制符,例如:x=12;y=1234;z=123
17、456;(1)printf(%3d,%3d,x,y);输出:12,1234(2)printf(%03d,%3d,x,y);输出:012,1234(3)printf(%-3d,%3d,x,y);输出:12,1234(4)printf(%ld,z);输出:123456,格式控制符,o格式符作用:以八进制数无符号形式输出整数,即符号位作为数值部分输出。例如:int a=-1;printf(%d,%o,a,a);输出:-1,177777,格式控制符,x格式符作用:以十六进制无符号形式输出整数。例如:int a=-1;printf(%d,%x,a,a);输出:-1,ffff,格式控制符,u格式符作用:以
18、十进制无符号形式输出整数。一个有符号的整型数据可以用%d格式输出,也可以用%u格式输出。例如:int a=-1;printf(%d,%u,a,a);输出:-1,65535,格式控制符,c格式符作用:用于输出一个字符。一个范围在0255的整数,既可以用%d格式输出,也可以用%c格式输出,输出的是该整数或其对应的ASCII码。例如:char c=A;printf(%c,%d,c,c);输出:A,65,格式控制符,s格式符作用:用于输出一个字符串。%s:按字符串的实际长度输出。%ms:如果%ms字符串的实际长度小于m,左端补空格;%-ms字符串的实际长度小于m,则右端补空格;否则,按实际长度输出。%
19、m.ns:若%m.ns取字符串左端n个字符,输出在m列的右端,左端补空格;%-m.ns取字符左端n个字符,输出在m列的左端,右端补空格;若mn,则m自动取n值输出n个字符。,格式控制符,例如:printf(%2s,start);输出:startprintf(%7.2s,start);输出:stprintf(%.3s,start);输出:staprintf(%-5.3s,start);输出:sta,格式控制符,f格式符作用:以小数形式输出实数。%f:整数部分全部输出,并输出6位小数。%m.nf:输出的数据共占m位,其中有n位是小数。若数的总长度m,则左端补空格。%-m.nf:与%m.nf类似,只
20、是数据输出时靠左端,右端补空格。,格式控制符,例如:float f=123.456;printf(%f,%10fn,f,f);printf(%10.2f,%-10.2f,f,f);输出:123.456001,123.456001 123.46,123.46,格式控制符,e格式符作用:以指数形式输出实数。%e:由系统自动指定给出5位小数,小数点前有且仅有1位非零数字;指数部分占4位,其中“e”占1位,“”占1位,指数占2位。%m.ne:m限定了输出宽度,n限定了输出整数与小数的总位数。若数据宽度小于m,则左端补空格。%-m.ne:与%m.ne类似,只是若数据宽度小于m,则右端补空格。,格式控制符
21、,例如:float f=123.456;printf(%e,%10en,f,f);printf(%10.2e,%-10.2e,f,f);输出:1.23456e+02,1.23456e+02 1.2e+02,1.2e+02,格式控制符,g格式符作用:自动选中f格式或e格式输出时占宽度较小的一种,且不输出无意义的零。例如:float f=123.456;printf(%f,%e,%g,f,f,f);输出:123.456001,1.23456e+02,123.456,3.4.4 格式化输入输出函数,格式化输入函数scanf格式:scanf(格式字符,地址列表);功能:按用户指定的格式从键盘上输入数据
22、,并将键盘输入的数据转换为指定格式存放到对应变量的内存地址中。说明:地址列表由变量的地址组成,如果有多个变量,则各变量的地址之间用逗号(,)间隔;地址列表中的地址由地址运算符(&)后跟变量名组成;输入类型与变量类型要一致。,scanf函数,注意事项:在scanf函数“格式字符”部分中的每个格式说明符都必须在“地址列表”中有一个变量与之对应。如果格式说明符之间没有任何字符,在输入数据时,两个数据之间要使用“空格”、“Tab”或“回车”键做间隔。例如:scanf(%d%d,输入:1 2 结果为:x=1,y=2,如果格式说明符之间包含其他字符,则输入数据时,应输入与这些字符相同的字符做间隔。例如:s
23、canf(%d,%d,输入:a b c 结果为:x=a,y=,z=b,输入整数时,可以指定数据的宽度。例如:scanf(%3d,是错误的。,如果在%后有一个“*”字符,表示输入的数据跳过,不赋给任何变量。例如:scanf(%d%*d%d,输入:1 2 3 结果为:x=1,y=3,z未赋值,2被跳过当连续使用多个scanf输入数据时,会发生数据残留问题。解决上述问题的方法有两种:(i)在第2个scanf的格式控制字符串前加一个空格,以吸收上一行输入的回车。(ii)使用fflush(stdin)来清除缓冲区的内容。,char a,b;scanf(%c,char a,b;scanf(%c,例如:,输
24、入:a 输出:97,10,输入:a b 输出:97,98,char a,b;scanf(%c,输入:a b 输出:97,98,3.4.2 常用数学函数,C语言提供的数学函数的原型在头文件math.h中声明。在使用时应在程序头部包含math.h文件。#include 或#include math.h,3.4.2 常用数学函数,三角函数函数原型:double sin(double x);double cos(double x);double tan(double x);功能:函数sin、cos、tan用于计算正弦、余弦和正切值,这三个函数的参数都是代表弧度值的double型数据。,【例3.7】计算
25、正弦、余弦和正切值。,#include#define PI 3.14159265main()double x,y;x=PI/2;y=sin(x);printf(sin(%f)=%fn,x,y);y=cos(x);printf(cos(%f)=%fn,x,y);x=PI/4;y=tan(x);printf(tan(%f)=%fn,x,y);,运行结果:sin(1.570796)=1.000000cos(1.570796)=0.000000tan(0.785398)=1.000000,3.4.2 常用数学函数,绝对值函数函数原型:int abs(int x);double fabs(double
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数据类型 运算 表达式
链接地址:https://www.31ppt.com/p-6503890.html