1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第 2章 基本数据类型、运算符与表达式,2.1,C语言的数据类型,2.2,常量与变量,2.3,整型数据,2.4,实型数据,2.5,字符型数据,2.6,各类数据混合运算,2.7,C语言的运算符与表达式,2.8,运算符的优先级及其结合性,Return,本章学习目标,熟悉,C,语言的数据分类,掌握常量的表示方法与变量赋初值的方法,掌握不同类型数据间的混合运算,掌握基本运算符及其表达式的使用,第 2章 基本数据类型、运算符与表达式,Return,本章学习目标,先做好预习,认真听课,自己上机练习实践,多用多记,在后续内容
2、学习中重复巩固,2.1,C语言的数据类型,C语言提供了以下一些主要数据类型:,说明:,C语言为每个类型定义了一个标识符,称为,类型名,。例如:整型用int标识、字符型用char标识等。一个类型名由一个或几个关键字组成,仅用于说明数据属于哪一种类型。,对于基本数据类型,按取值是否可改变分为常量和变量两种。在程序执行过程中,其值不发生改变的量称为,常量,,取值可变的量称为,变量,。它们可与数据类型结合起来分类。例如,可分为整型常量、整型变量、字符常量、字符变量等。在程序中,常量是可以不经过说明而直接引用的,而变量则必须先说明后使用。,Return,在程序运行中,其值不改变的量称为常量。常量区分为不
3、同的类型,如:,5、0、-7为整型常量,3.2、-4.68为实型常量,a、f为字符常量,常量从字面形式即可判别。也可用一个标识符代表一个常量,称为,符号常量,。习惯上,,符号常量名用大写,变量名用小写字母表示,,以示区别,例如:,#define PI 3.1415926,2.2 常量与变量,Return,2.2.1 常量,【例2-1】符号常量的使用。,已知圆半径为r,求圆周长c和圆面积s的值。,#define PI 3.1415926,main(),float r,c,s;,scanf(“%f”,c=2*PI*r;,s=PI*r*r;,printf(“c=%6.2f,s=%6.2fn”,c,s
4、);,在该程序中,用#define命令行定义PI,PI为定义的符号常量代表3.1415926,此后凡在程序中出现的PI都代表3.1415926。,f表示以小数或者指数形式输入实型数据,从上面的例子可以看出使用符号常量的好处:,一是含义清楚、见名知意。看程序时从PI就可以知道它代表圆周率;二是修改方便,一改全改。如要“#define PI 3.1415927”,则在程序中 所有出现PI的地方值全部改为3.1415927。,Return,在程序运行时其值可以改变的量称为变量。,变量是由变量名、变量值和存储单元组成的。,2.2.2 变量,1,变量名的命名规则:,变量名用标识符表示。在C语言中,用来对
5、变量、符号常量、函数、数组等数据对象命名的有效字符序列统称为标识符。,C语言规定标识符只能由,字母,、,数字,和,下划线,3种字符组成,且第一个字符必须是,字母或下划线。,下面列出的是合法的标识符,可作为变量名:,abc,,sum,f4,student_1,下面是不合法的标识符:,8h 以数字开头,-5 以减号开头,A*出现非法字符*,xy 出现非法字符=!=),逻辑运算符 (!&|),位运算符 (|&),赋值运算符 (=及其扩展赋值运算符),条件运算符 (?:),逗号运算符 (,),指针运算符 (*&),求字节数运算符 (sizeof),强制类型转换运算符 (类型),分量运算符 (.-),下
6、标运算符 (),其它 (如函数调用运算符()),C语言的运算符有以下几类:,C语言有以下类型的表达式:,赋值表达式,如:a=1,算术表达式,如:1*2+3/4.5,关系表达式,如:47,逻辑表达式,如:84&ab?a:b,逗号表达式,如:a=1,b=2,c=3,位表达式,如:0&1=0,1|1=1,10=1,2.7.1,算术运算符和算术表达式,1.算术运算符,C语言提供的算术运算符及功能如下:,+加法运算符或正值运算符。如31+18,+2。,-减法运算符或负值运算符。如6-3,21+(-57)。,*乘法运算符。如4*1.9。,/除法运算符。如5/3。,%模运算符或称取余运算符,要求%的两边必须
7、为整型数据。如123%15,2%7都是正确的,而25%1.5,12.0%6.0都是错误的表示。,2.算术表达式,用算术运算符和括号将数据对象连接起来的式子,称为算术表达式。运算对象包括常量、变量、函数等。,例如:3+6*9,(x+y)/2-a,a*b+c-1.5+a,都是算术表达式。,算术运算符的结合方向为“自左至右”。,【例2-13】将430分钟换算成小时和分钟表示,然后输出。,/*exam2_13*/,main(),int i,h,m;,i=430;,h=i/60;,m=i-60*h;,printf(“n%d minutes:%d hour%d minutes”,i,h,m);,程序运行结
8、果:,430 minutes:7 hour 10 minutes,演示,【例2-14】求表达式2+d-10的值。(设a=64,d=6),/*exam2_14*/,#include /*调用标准数学函数,,注意添加,*/,main(),float a,d,s;,a=64,d=6;,s=2*sqrt(a)+d-10;,printf(“n%6.2f”,s);,程序运行结果:,12.00,演示,2.7.2,自增与自减运算符,1.功能,自增运算符+的作用是使变量的值增,自减运算符-的作用是使变量的值减。,2.用法与运算规则,自增、自减运算符都有两种用法:,(1)前置运算,运算符放在变量之前:变量、变量,
9、2)后置运算,运算符放在变量之后:变量、变量,【例2-16】自增、自减运算符的用法。,/*exam2_16*/,main(),int x=6,y;,printf(x=%dn,x);,/*输出x的初值*/,y=+x;,/*前置运算*/,printf(y=+x:x=%d,y=%dn,x,y);,y=x-;,/*后置运算*/,printf(y=x-:x=%d,y=%dn,x,y);,程序运行结果:,x=6,y=+x:x=7,y=7,y=x-:x=6,y=7,演示,注意:在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。,Return,2.7.3,赋值运算符和赋值表达
10、式,1.赋值运算符,赋值运算符为“=”,它的作用是将一个数据赋给一个变量。,转换原则:,先将赋值号右边表达式类型转换为左边变量的类型,然后赋值。,【例2-17】赋值运算中类型转换的规则。,/*exam2_17*/,main(),int i=5;,/*说明整型变量i并初始化为5*/,float a=3.5,a1;,/*说明实型变量a和a1并初始化a*/,double b=123456789.123456789;,/*说明双精度型变量b并初始化*/,char c=A;,/*说明字符变量c并初始化为A*/,printf(i=%d,a=%f,b=%f,c=%cn,i,a,b,c);,/*输出i,a,b
11、c的初始值*/,a1=i;i=a;a=b;c=i;,/*整型变量i的值赋值给实型变量a1*/,/*实型变量a的值赋给整型变量i*/,/*双精度型变量b的值赋值给实型变量a*/,/*整型变量i的值赋值给字符变量c*/,printf(i=%d,a=%f,a1=%f,c=%cn,i,a,a1,c);,/*输出i,a,a1,c赋值以后的值*/,程序运行结果:,i=5,a=3.500000,b=123456789.123457,c=A,i=3,a=123456792.000000,a1=5.000000,c=,演示,2.复合的赋值运算符,在赋值符“=”前加上某些运算符,可以构成复合赋值运算符。即,+=
12、/=,%=,,=,&=,|=,=(共10种),复合赋值运算符均为双目运算符,,右结合性,。,功能,:对变量名和表达式进行复合赋值运算符所规定的运算,并将运算结果赋值给复合赋值运算符左边的变量名。,2.复合的赋值运算符,#include stdio.h,main(),int a=2,b=4,c=6,d=3;,a+=b*d;,b-=c/d;,printf(%d,%d,%d,%dn,a,b,c*=2*a,d%=c);,getch();,2.复合的赋值运算符,在赋值符“=”前加上某些运算符,可以构成复合赋值运算符。即,+=,-=,*=,/=,%=,,=,&=,|=,=(共10种),复合赋
13、值运算符均为双目运算符,,右结合性,。,功能,:对变量名和表达式进行复合赋值运算符所规定的运算,并将运算结果赋值给复合赋值运算符左边的变量名。,3.赋值表达式,赋值表达式:,由赋值运算符组成的表达式称为赋值表达式。,赋值表达式一般形式:,变量名 赋值运算符 表达式,赋值的含义:,将赋值运算符右边的表达式的值存放到左边变量名标识的存储单元中。,例如:a=5+b;,执行赋值运算,将5+b的值赋给变量a,同时整个表达式的值就是刚才所赋的值。,赋值运算符的功能:,一是计算,二是赋值。,Return,2.7.4,关系运算符及其表达式,1.关系运算符,C语言提供了6种关系运算符:,大于,=大于或等于,=等
14、于,!=不等于,2.关系表达式,用关系运算符将两个操作数连接起来的合法的C语言式子,称为关系表达式。,例如,关系表达式”1=2”的值为“假”,,“43”的值为“真”。,在C语言中,以0表示逻辑假,以1表示逻辑真,。当输出结果为逻辑真时,显示1;,当输出结果为逻辑假,显示0。,Return,2.关系表达式,#include stdio.h,main(),int a,b,c,x=17,y=16,z=13;,a=xyz;b=-x-y=z;c=x=y;,printf(nx=%d,y=%d,z=%dn,x,y,z);,printf(na=%d,b=%d,c=%dn,a,b,c);,getch();,Re
15、turn,2.7.5,逻辑运算符及其表达式,1.逻辑运算符,C语言提供三种逻辑运算符:,|逻辑或(相当于“OR”),&逻辑与(相当于“AND”),!逻辑非(相当于“NOT”),逻辑运算符的运算规则:,&:当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。,|:当且仅当两个运算量的值都为“假”时,运算结果为“假”,否则为“真”。,!:当运算量的值为“真”时,运算结果为“假”;当运算量的值为“假”时,运算结果为“真”。,C语言中的“或”符号怎么输入:shift+,逻辑运算符的优先级:,“逻辑非”的优先级最高,“逻辑与”次之,“逻辑或”最低,“与数字电路一致”,2.逻辑表达式,逻辑
16、表达式是指用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。,注意:,判断一个数据的“真”和“假时”,以“0”和“非0”为依据。,Return,2.逻辑表达式,#include stdio.h,#include string.h,#include math.h,main(),int a,b,c;,scanf(%d,%d,%d,printf(%dn,a,printf(%dn,!(a=b);,printf(%dn,a|b+c,printf(%dn,!(ab),getch();,Return,2.7.6,逗号运算符(,)及其表达式,逗号运算符的结
17、合方向是“,从左向右,”,它的优先级是所有运算符中,最低,的。,用逗号运算符连接起来的表达式称为,逗号表达式,。,它的一般形式为:表达式1,表达式2,表达式n,逗号表达式的运算过程是:,先算表达式1,再算表达式2,依次计算直到表达式n。整个逗号表达式的值是表达式n的值。,2.7.7,位运算符及其表达式,位运算符是位运算使用的运算符;位运算是指针对二进制位进行的运算。,C语言提供以下6种位运算符:,关系运算符,含义,&,按位与,|,按位或,按位异或,按位取反,右移位,位运算符优先级别,:,高,&,|低,Return,提示:符号 是英文状态下,shift+6,2.8 运算符的优先级及其结合性,1.运算符的优先级,一般而言,单目运算符优先级较高,赋值运算符优先级低,算术运算符优先级较高。,2.运算符的结合性,多数运算符具有左结合性,单目运算符、赋值运算符和复合赋值运算符为右结合性。,Return,作业与实验,作业:习题二,上机操作:实验二,Return,






