c程序设计-第三章数据类型、运算符、表达式.ppt

上传人:小飞机 文档编号:6503592 上传时间:2023-11-07 格式:PPT 页数:29 大小:695.50KB
返回 下载 相关 举报
c程序设计-第三章数据类型、运算符、表达式.ppt_第1页
第1页 / 共29页
c程序设计-第三章数据类型、运算符、表达式.ppt_第2页
第2页 / 共29页
c程序设计-第三章数据类型、运算符、表达式.ppt_第3页
第3页 / 共29页
c程序设计-第三章数据类型、运算符、表达式.ppt_第4页
第4页 / 共29页
c程序设计-第三章数据类型、运算符、表达式.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《c程序设计-第三章数据类型、运算符、表达式.ppt》由会员分享,可在线阅读,更多相关《c程序设计-第三章数据类型、运算符、表达式.ppt(29页珍藏版)》请在三一办公上搜索。

1、第三章 数据类型、运算符、表达式,2.1 C的数据类型,一个程序包括两方面的内容:1、数据描述 2、操作步骤,数据结构+算法=程序,程序=算法+数据结构+程序设计方法+语言工具和环境,常量和变量,2.2.1 常量和符号常量 常量:在程序运行过程中,其值不能改变的量。整型常量12、0、3 实型常量4.6、-12.3 字符常量a、b 字符串常量-“COMPUTER”、“YOU ARE A BOY”符号常量用标示符代表一个常量,例2.1#define price 30#include void main()int num,total;num=10;total=num*price;printf(“to

2、tal=%d”,total);,说明:程序中用#define命令行定义price 代表常量30,此后凡在此文中出 现的price都代表30,和常量一样 运行。,注:符号常量在其作用域(主函数)内不能改变,也不能赋值。,变量,变量:值可以变的量。(一个变量应该有一个名字,在内存中占据一定的存储单元,并 在该单元中存放变量值。)scanf(“%d,%d”,变量名为a的内存单元,注:1、为变量命名时应注意变量名的合法性;2、再C语言中大写字母和小写字母被认为是两个不同的字母(sum、SUM);3、再C语言中变量名的长度不能超过8个字符(student_name、student_number);4、C

3、语言中要求对所有用到的变量作强制定义,也就是“先定义,后使用”。,#include void main()int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is%d”,sum);,目的:1、每个变量被指定为已确定的类型,在编译时就可以为其分配相应的存储空间。2、每一个变量属于一个类型,就便于在编译 时据此检查变量进行的运算是否合法。a=12.2,#include void main()int a,b;a=123;b=456;int sum;sum=a+b;printf(“sum is%d”,sum);,#include void main()a=123;b

4、=456;int a,b,sum;sum=a+b;printf(“sum is%d”,sum);,整型数据,2.3.1 整型常量 1、十进制整数 123、-456、0 2、八进制整数,以0(零)开头的数是八进制整数。0123=(123)8-011=-(11)8 3、十六进制整数,以0X开头的是十六进制整数。0X123=(123)16-0X123=-(123)16,整型变量 书P41 变量的定义:类型说明符 变量名1,变量名2 int a,b long int c,d,实型数据,实型常量 1、十进制实型数据:0.123、123.00、0.0 2、指数型实数:,实型变量,变量的定义:类型说明符 变

5、量名1,变量名2 float num1,num2,double a;a=111111.111;,float b;b=1111.11;,float c;c=111111.1 11;,注:实型常量不分float、double,一个实型常量可以赋给一个单精度变量也可 以赋给一个双精度变量,根据变量类型截取常量中的有效数位。,字符型数据,字符型常量 1、用单引号括起来的单个字符。a、b、?2、特殊形式的字符常量,就是以一个“”的字符系列。,f,g,i,k,字符变量(占内存空间为1个字节),字符变量(char):用来存放字符常量。(注:只能存放一个字符,该字符在书写时应用单引号括起来,不能存放字符串),

6、char c1,c2;c1=a;c2=b;,字符数据在内存中存储形式以及使用方法,将一个字符常量存放到一个字符变量中去,实际上并不是把该字符本身存放到内存单元中去,而是把该字符相应的ASCII码存放到存储单元中。,char c1,c2;c1=a;c2=b;,字符数据的存储方式和整数的存储形式类似,一个字符既可以以字符形式输出(输入),又可以以该字符的ASCII码作为整数输出(输入)。,#include void main()char c1,c2;c1=97;c2=98;printf(“%c,%c”,c1,c2);printf(“%d,%d”,c1,c2);,a b 97 98,小写字母转换为大

7、写字母,#include void main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c,%c”,c1,c2);,A B,字符串常量,字符串:有一对双引号括起来的字符序列。,“how do you do”“CHINA”“$123.34”printf(“”$234.34”);,“a”和 a有何区别?,“a”:,C规定:当字符串被存放在内存中时,计算机会自动的在每一个字符串的结尾加 一个字符串结束标记“0”,以便系统据此判断字符串是否结束。,a:,a,注:1、“0”为空操作符,它不引起任何动作,也不是一个可显示的字符,在写字符 串时不必加“

8、0”,因为“0”是系统自动加上的。2、c语言中没有专门的字符串变量,字符串如需放在变量中,需用字符型数组来存放。,char a;a=“c”;,char a;a=c;,int 2字节,c char 1字节,float 4字节,double 8字节,2.6变量定义 数据类型 变量名表;int a,b,c;float d;注:1、变量名表之间的变量用逗号分隔。2、不能有变量定义的二义性。,#include void main()int a,b,c;char a,cha;,#include void main()char c1,c2;c1=97;c2=98;printf(“%c,%c”,c1,c2);

9、,3、变量名属于标示符,一般用小写字母(不能与关键字相同)4、程序中变量是按名引用的。给变量取名一般应考虑变量所表示的量的 含义和使用目的,以提高程序的可读性。5、对变量的定义,一般是放在一个函数的开头部分。2.7变量赋初值 C程序中的变量不仅必须先定义再使用,而且表达式中的变量必须具有确定的值。让变量具有确定的值,可以给变量赋值,也可以给变量赋初值,或从键盘给变量输入值。赋初值又叫初始化,即在定义变量的同时给变量赋值。,1、程序中为变量赋值,#include void main()int a,b,sum;a=90;sum=a+b;printf(“sum=%d”,sum);,2、可以在定义变量

10、时同时使变量初始化,#include void main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c,%c”,c1,c2);,#include void main()char c1=a,c2=b;c1=c1-32;c2=c2-32;printf(“%c,%c”,c1,c2);,#include void main()char c1=a,c2;c2=b;c1=c1-32;c2=c2-32;printf(“%c,%c”,c1,c2);,错:int a=b=c=4;,对:int a=4,b=4,c=4;,数据类型与表达式,变量(值可以变的量)

11、变量的4要素:名称 类型 长度 值,:变量声明时计算机自动为它划分一定大小的内存空间 变量的声明:类型名 变量名1、变量名2、;char name1,name2;,:变量名=表达式;(将一个常量的值赋予一个变量)name1=a;name2=97;,将一个字符常量存放到一个字符变量中去,实际上并不是把该字符本身存放到内存单元中去,而是把该字符相应的ASCII码存放到存储单元中。,各类数值型数据的混合运算,整数、实数(单精度、双精度)、字符型数据可以混合运算,10+a+1.5-8765.1234*b,在运算时,不同类型的数据先转换为同一类型数据。,double floatlongunsignedi

12、nt char、short,图中横向向左的箭头表示必定转换。纵向箭头表示当运算对象类型不同时各类型数据的转换方向。,10+a+I*f-e/d,(假设I为整型变量,f、d为双精度型数据,e为长整型),赋值时的类型转换,1、将实型数据(包括单精度数据、双精度数据)赋给整型变量时,舍弃小数部分。,int i;i=3.14;printf(“”i=%d”,i);,i=3,2、将整型数据赋给单精度、双精度数据时,数值不变,但以浮点数型是存放到变量中。,float f;f=23;,23.00000,3、字符型数据赋给整型变量时,由于字符只占一个字节,而整型变量为两个字节,因此将字符数据放到整型变量的低8位中

13、。,(1)如果所用系统将字符处理为无符号的量,则将字符的8位放到整型变量 的低8位而高位补0。,int i;i=376;,11 11 11 10,(2)如果所用系统将字符处理为带符号的量,若字符高位为0,则整型变量 高8位补0;若字符最高位为1,则高8位全补1。,符号扩展,int i;i=376;,11 11 11 10,-2,4、将带符号的整型数据(int)赋给长整型变量时,要进行符号扩展。如果int数据为正值,则长整型变量高位补0,如果int型变量为负值(符号位为1),则长整型高位补1,将int型数据的16位数据送长整型低16位中。反之,若将一个长整型数据赋给一个int型变量,只将长整型数

14、据中低16位原封不动送到整型变量。,int a;long int b=8;a=b;,b=65536;a=b;printf(“a=%d”,a);,a=0,算术运算和算术表达式,运算符简介,1、算术运算符(+、-、*、%)2、关系运算符(、=、|、&)5、复制运算符(=)6、条件运算符(?、:)7、逗号运算符(,)8、指针运算符(*,&)9、求字节数运算符(sizeof)10、强制类型转换运算符(类型符)11、下标运算符()12、分量运算符,算术运算符和算术表达式,一、基本的算术运算符+*/%(莫运算复或取余运算符)1、/:两个整数相除结果为整数。5/3=1-5/3=?,(如果除数或被除数中有一个

15、值为负数,则舍入方向不固定-1、-2),2、%:要求两侧数据均为整数。,二、运算符的优先级与结合性,A*b/c-1.5+a,先乘除后加减,从左到右的运算方式,三、可以利用强制转换符将一个表达式转换为所需类型。,/数据,(double)a(将a转换为double)(int)(x+y)(将x+y的值转换为int)(int)x+y(将x转换为int在和y相加),%:float%int=(int)float%int,#include void main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);,x=3.600000,i=3,四、自增、

16、自减运算符(作用是变量增一或减一),i=1+i、i=i-1,+i、-ii+、i-,在引用i之前,先使i的值加一(减一),在引用i之后,使i的值加一(减一),#include void main()int i,j1,j2;i=9;j1=+i;j2=i+;printf(“+i=%d;i+=%d”,j1,j2);,+i=10,i+=9,#include void main()int i=0;printf(“+i=%d”,+i);,1,#include void main()int i=0;printf(“i+=%d”,i+);,0,注:1、自增运算(+)自减运算(-)只能用于变量,不能用于表达式、常

17、量。5+,错,错,(a+b)+,5=5+1,(a+b)=(a+b)+1,2、+、-的结合方式是“从右到左”,i=3;-i+,对,数据类型与表达式,关系运算和逻辑运算,关系运算,(比较运算),六种关系运算符:、=、=(等于)、!=(不等于),算术运算关系运算赋值运算,例:C A+B A B!=C A=B C,等效于:C(A+B)等效于:(AB)!=C等效于:A=(BC),关系表达式,用关系运算符将两个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式)连结起来的式子。,Ab、a+b(b=5)、a=c、(ab)(bc),数据类型与表达式,注:关系表达式的值是一个逻辑值。(真1、非0

18、,假0),a=3,b=2,c=1ab a+b(b=5)a=c(ab)(bc),逻辑运算符、逻辑表达式,|或(OR)&与(AND)!非(NOT),一目运算符!(a+b),105&109|3=4,(105)&(109)|(3=4),数据类型与表达式,逻辑表达式,注:,3、C语言编译系统在给出逻辑运算结果时,以数值“1”代表“真”,以数值“0”代 表“假”。但在判断一个量是否为“真”或为“假”时,以0代表假以非0代表“真”。,4 6&5=7!(S=H),!4 值为 0,A=1,S=7 A|S 值为 1,!A|S 值为 1,2、用来对逻辑型数据进行各种逻辑运算,产生逻辑结果(真、假)。,1、&:若两侧

19、值都为真则值为真;|:若两侧值一个为真则值为真;!:求反。,例:5 3&2|8 4-!0,3,0,0,0,有一数 X 满足以下条件:3=100,A&B,0,(X3&X=100,练习,1、以下程序段的输出分别是什么?1)int x=8;int y=-5;printf(“%d%dn”,x+,y+);printf(“%d%dn”,x-,y-);2)int x=8;int y=-5;printf(“%d%dn”,+x,+y);printf(“%d%dn”,-x,-y);2、假定x的值的等于100,问在执行以下四个语句的过程中,x的值和表达式的值分别怎样变化?x的值 表达式的值 x+x x-x,赋值表达

20、式,一、复合的复值运算符 在赋值符“=”加上其它运算符,可以构成复合的运算符。+=、%=a+=3(a=a+3)x*=y+8(x=x*(y+8)x%=3(x=x%3)目的:简化程序,是程序简练,提高编译效率。凡二元运算符,都可以与赋值符一起组合成复合赋值符(10)。+=、-=、*=、/=、%=、&=、二、赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式值称为“赋值表达式”。a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a+=a-=a*a,逗号运算符,逗号表达式:用逗号连接起来的表达式。(3+6,8+5)一般形式:表达式1,表达式2求解过程:先求表达式1的值,再求表达式2的值。整个逗号表达式的值为表达式2的值。a=3*5,a*4 a=(z=3*5,z*4),z+5,60,20,注:逗号运算符的在所有运算符中的运算级别最低。并不是任何地方出现的逗号都作逗号运算符。,printf(“%d,%d,%d”,a,b,c);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号