C语言的基本数据类型及其运算.ppt
C语言程序设计,E_mail:teacher_,主讲教师:马驰,C语言的基本数据类型及其运算,学习目标:,熟悉基本数据类型认识常量 理解变量和存储以及变量定义能够使用运算符理解运算符的优先级及表达式的运算规则 简单表达式的运算,2.1 C语言的数据类型,注意:C程序中所出现的所有数据都必须明确指定其数据类型。,数据类型,空类型,指针类型,构造类型,数据类型的分类:C语言提供了丰富的数据类型。,数据类型的概念:数据类型是一类数据的抽象表示,这类数据具 有相同的形式,遵从相同的运算规则.,C语言的基本数据类型及其运算,数据类型的长度:在计算机中,由于软硬件的各种原因,数据类 型必须有一个长度的限制。这个长度是指数据 存储在计算机中需要占用多少个字节数。不同 类型的数据在内存中占用的字节数是不同的。,溢出处理:不同的数据类型规定了不同的机内表示长度,也决定了 对应数据量的变化范围。当某一数据超出该数据类型所规定的范围时,计算机会拒绝接受,而将之转换成范围内的另外某个数,这种情况称之为溢出处理。,例如:在PC机上的Turbo C系统下整型的长度规定为2个字节,所 以表示的范围限制在-3276832767(-215215-1)之间。在大多数UNIX机器上,整数是由4个字节(32位),它们表 示的范围是-2147483648 2147483647(-231231-1)。,溢出演示:21.c,C语言的基本数据类型及其运算,常量和变量是在计算机中数据类型的具体表现形式,它们不再是抽象的概念而是实在的数据,这些数据符合对数据类型的规定(形式和运算规则两方面)。常量和变量之间的区别在于程序执行过程中的变化情况。常量是一成不变的,而变量则可以不断改变。,2.2 常量与变量 C语言中的数据分为常量和变量。他们都有类型之分。,2.2.1 常量与符号常量,2.2.2 变量,C语言的基本数据类型及其运算,常量:在程序运行过程中其值不能被改变的量值。例如:1,2,3.1,-4.0,A,b,“abnc”,“ABn”。,C语言规定的常量根据数据类型分为四种:,整型常量 实型常量 字符型常量 字符串常量,在程序中使用常量时,一般不需要具体指出它属于哪一种类型,C语言编译系统会自动根据常量的数据大小和直观形式来确定它 的数据类型。,例如:(1)1,2,-1 这些值为整数,属于整型常量;(2)3.1,-4.0,3.1415926的值为实数,属于实型常量。(3)A,b则为字符常量。,符号常量:当某个常量引用起来比较复杂而由要经常使用时,可以将该常量定义为符号常量。,C语言的基本数据类型及其运算,整型常量:就是一个整数。在计算机中一般占用2个字节。,三种形式:,例如0X100表示十六进制数100。0 x123,0 xacd,100表示十进制100。,例如0100表示八进制数100。例如:0123,-0456等,注意:整常数在不加特别说明时为正值。如果是负值,则“-”必须放在常 数的前面。例如:-123长整型常量和普通的整型常量基本相似,在一个常数的后面加一个 字母L或l,则被认为是长整型。长整型常量的长度为四个字节,因 此长整型常量的表示范围要远远大于整型常量。例如:10L,79L,0115L,0 x4eL,整型,C语言的基本数据类型及其运算,实型常量:就是通常带有小数点的实数,在计算机中占用4个字节。,实型常量有两种表示方法:,十进制数形式(由正负号、数字和小数点组成)例如:100.5,-1.0,.123,5.,0.0,指数形式(由尾数、字母E或e、指数三部分组成)例如:123.0E-1,1.23E3,注意:必须有小数点,标准的指数形式是:小数点的左侧只有一位数字。例如1.23E-2,0.276E3。计算机的输出是按标准指数形式输出的。,注意:指数部分必须为整数,不能为小数,注意:书写实型常量时常有一些省略形式,实型常量中的小数部分或整数 部分可以省略,但不能同时省略;小数点不能省略;指数形式 中的E或e不能省略;+可以省略;-不能省略。所有的实型常量的有效位数为7位,所以一个实型常量中超过7个有效 位的部分是无效的。字母E或e之前必须有数字,而且字母E或e之后的指数必须为整数。,实数,C语言的基本数据类型及其运算,字符常量:包括可以全部在计算机上显示的符号,也可以说是ASCII 码表上的全部字符,一个字符占一个字节。,字符常量表示方法:用单引号 将一个字符括起来。例如:A、1等。,在C语言中字符是按其所对应的ASCII码值来存储的,目前计算机系统中的字符集有两种:ASCII码和EBCDIC码。,美国标准信息交换码,128个字符,最为常用的,是ISO(标准化组织)标准的字符集。在其字符集内,每个字符对应唯一的码值(次序值),不同字符,码值不同。例如:0表示数字字符0,其码值为48;A表示字母字符A,其码值为65等。ASCII字符集内,数字、大写、小写字母的大小关系为:09AZaz,(扩充的交换码,256个字符),C语言的基本数据类型及其运算,C语言中有两种类型的字符常量:,1.普通字符:用单引号 括起来的一个(单个)字符。例如:a、$、=、3等。,2.转义字符:通常使用转义字符表示ASCII码字符集中不可打印的 控制字符以及具有特定功能的字符。转义字符用()开头后面跟一个字符或一个八进制 或十六进制数表示。例如:n表示换行,t表示 横向跳格。,注意:(1)每个字符常量数据只能是一个字符,不能是一串字符。(2)字符1和数字1的区别:前者是字符常量,后者是整型常量。它们的含义和在计算机中的存储方式都不相同。(3)字符常量可以像整型常量(整数)一样在程序中参与相关的 运算。例如:A+32;/*执行结果65+32=97,是a的ASCII码值*/结果演示22.c,由于跟在“”后的字符已不代表原来的字符含义了,所以称其为转义字符。,字符型,C语言的基本数据类型及其运算,字符串常量:用一对双引号“”阔起来0个或多个字符组成的字符 序列。串是一组字符。,例如:“”空串(0个字符),“a”是由一个字符a构成的字符串,“Happy new Year”是由多个字符序列构成的字符串,“abcn”是由多个字符构成的字符串,“”不是空串,是空格串,注意:1.C语言规定字符串的最后必须以空字符0结尾。这个结束符是C语 言自动加上的,空字符并不计算在字符串的长度里,但是存储时,空字符将会额外的占用一个字节空间。,例如:字符串“”ABC”的长度是?字符串“xab107A”的长度?,2.字符序列中的字符个数称为字符串的长度。对字符串的理解中比较 容易出错的是当字符串中出现转义字符时字符串长度的确定。,C语言的基本数据类型及其运算,字符常量与字符串常量的区别:,#1:a 与“a”是不同的:a 表示的是字符常量,在内存中占一个字 节;而“a”表示的是字符串常量。在内存中占2个字节。,#2:一个字符串常量的存储长度要比它实际的字符串长度多一个字节(字符)。,所以:字符串常量与字符常量的区别是:1)书写格式不同:与“”2)表现形式不同:一个与多个 3)存储方式不同:长度不同,在内存中,字符常量的存储只占用一个字节,而字符串常量存储时,C语言编译系统将自动在字符串的尾部加上一个特殊的字符0,作为字符串结束的标志。系统依据此标志进行判断该字符串是否结束。,字符串,C语言的基本数据类型及其运算,符号常量:在C语言中允许程序中的常量定义为一个标识符,这个 标识符称为符号常量。既带有名字的常量。,符号常量必须在使用前先定义,定义格式:#define,优点:简化书写格式、减少出错率;可以和常量一样进行运算,一旦要求有所变化,只需更改 宏定义。,例如:#define AGE 35#define M 1.9734067e9,注意:符号常量不同于变量,在其作用域内不能被改变和重新赋值。习惯上,符号常量名用大写英文标识符,而变量名用小写英文标识 符,以示区别。定义符号常量可以提高程序的可读性,便于程序的调试和修改。因 此在定义符号常量名时,应尽量使其表达它所代表的常量的含义。,符号常量,C语言的基本数据类型及其运算,变量:就是在程序运行过程中其值发生改变(可以被改变)的量值。,变量的命名:,变量的定义:,变量的属性与赋值:,变量的引用原则:,C语言规定所有用到的变量都必须在程序中指定其数据类型,必须“先定义后使用”,一个变量应该有一个名字(标识符),一种数据类型以及一个数据值。定义变量时要给其命名;该变量在内存中占据一定的存储单元,编译系统根据定义的变量的数据类型为其分配存储单元并在该存储单元中存放变量的值。,C语言的基本数据类型及其运算,变量的命名:,注意:1.C语言规定标识符只能由字母、数字和下划线组成。且第一个 字符必须是字母或下划线。2.大、小写字母被认为是不同的变量名。Sun、sun、SUN是三个 不同的变量。为了避免混淆,应该为变量取不同的名字而不 是用大小写区分。3.变量名的长度无统一的规定,但在取名时长度尽量在31位有效 字符之内。4.尽量取与变量含义接近的名称。,C语言允许将值存放在变量中,C程序中出现的每个变量,都是 由用户在程序设计时按照标识符的规则取名并定义的。每个变 量都由一个变量名来标识。,命名,C语言的基本数据类型及其运算,变量定义具有二个目的:(1)定义变量名。(2)定义变量的数据类型。,变量定义的格式:type namelist;,例如:int a,b23,C_123;,数据类型的类型标识符,准备声明的变量名称列表,注意:任何一个变量都必须具有确定的数据类型,变量类型告诉 C该变量的用法以及保存的方法。不管变量的值怎样变化,必须符合该类数据类型的规定(形式和规则两个方面)。,变量的基本数据类型:,整型变量、实型变量、字符型变量,变量的定义,变量的定义说明了变量叫什么以及用来做什么。定义一个变量的过程,实际上就是向内存申请一个变量的数据类型大小的空间的过程。变量实质上就是内存某一单元的标识符号,对这个符号的引用就是对相应的内存单元的存取操作。,C语言的基本数据类型及其运算,整型变量:,整型类型的标志是int,一个整型变量可以保存一个整数。,C语言提供的整型变量有:基本型(int)短整型(short int、short)长整型(long int、long)无符号整型(unsigned int、unsigned long、unsigned short),一般:以一个机器字(word)存放一个int型数据,而long int型数据 的字节数应不小于int型,short int型数据的字节数应不长于 int型。,注意:使用某种类型的变量时,一定要注意该类型变量的取值范围。,例如:int a,b,c;long i,j;,整型,C语言的基本数据类型及其运算,实型变量:,C语言提供的实型变量有两种类型:单精度(float)和双精度(double),定义格式:float(double);,例如:float a,b,c;double d,e,f;,在一般系统中,C语言对一个float型实数提供4个字节的存储单元,而对一个double型实数则提供8个字节的存储单元。float可存放7位有效数据,double可提供15-16位的有效数据。,例如:float a;a=98765.4321;double b;b=98765.4321;,注意:(1)运用实数运算时要注意数据的范围。例如:float a;a=0.000000011;需要用double来进行定义。(2)一个实型常量可以赋给float或 double型变量,根据变量的 类型截取实型常量的相应有效位数。,实型,演示23.c,C语言的基本数据类型及其运算,字符变量:,用来存放一个字符常量。即一个字节存放一个字符。,格式:char;,例如:char c1,a2;,注意:不能将一个字符串常量赋给一个字符变量。,例如:char c1,c2;c1=a;c2=b;,合法:占一个字节,例如:char c1,c2;c1=“a”;c2=“abc”;,非法:占2个或4个字节,为什么字符数据与整型数据之间可以通用?,字符型的数据在机器内存中是以ASCII码的形式保存的,由于ASCII码的取值范围为0255,可用一个字节存放。字符型数据在内存中以二进制码形式存储,而整型数据在内存中也是二进制码的形式。也就是说:字符数据与整型数据在内存中的存储格式是一样的。基于这一点,C语言允许整型数据与字符型数据通用。实际上字符是一组小整数的集合。,C语言的基本数据类型及其运算,例:main()char c1,c2;c1=a;c2=b;printf(“c1=%c,c2=%cn”,c1,c2);printf(“c1=%d,c2=%dn”,c1,c2);c1=97;c2=98;printf(“c1=%c,c2=%cn”,c1,c2);printf(“c1=%d,c2=%dn”,c1,c2);,运行结果:c1=a,c2=b 演示24.c c1=97,c2=98 c1=a,c2=b c1=97,c2=98,一个字符型数据既可以以字符型形式输出也可以按整型数据格式输出:按字符型形式输出时系统首先将内存单元中二进制码值转换为相应的字符,然后输出这个字符;按整型数据形式输出一个字符时,直接输出该字符的ASCII码值。C编译系统根据程序的上下文来决定取字符本身还是取ASCII码值。,C编译系统首先将a,b转换为ASCII码值97,98然后存放在内存单元中。,字符型,C语言的基本数据类型及其运算,变量的属性与赋值:,例如:int i;分配2个字节大小的内存 空间,以后变量i的值就从这2个 字节单元中取得。,变量有4个属性:,(1)名称:符合标识符的命名规则(2)数据类型:必须属于某种数据类型(3)值:定义一个变量的目的就是为了使用它的内容(值),没有值的变量是没有意义的。(4)地址:是系统分配给变量的内存单元之编号。这个内存单 元用来存放变量的值。,其中:(1)(2)由用户定义,(4)由系统决定,而(3)来自程序中的赋值。,i=3就代表变量i的内存值为3,&i,C语言的基本数据类型及其运算,变量赋值的方法:,(1)初始化赋值方式(变量赋初值)C语言允许在定义一个变量的同时对变量进行初始化。,例如:int i=0;表示定义一个整型变量i的同时将i赋值为0。,注意:如果对几个变量同时赋一个初始值,则可以写成 float a=3.0,b=3.0,c=3.0;表示a、b、c的初始值均为3.0,但并不表示整个程序中三个变量值一直不变或一直相等。,int i,j,k;k=10;,例如:int i,j,k=10;,表示i,j,k为整型,只有k被初始化赋值,其值为10。,(2)赋值语句方式 在程序运行过程中用赋值语句给变量赋一个值。例如:a=10;,C语言的基本数据类型及其运算,例:演示25.c#define MULTI 123main()int num1=0;/*赋初值方式*/int num2;int total1=0,total2=0;num2=20;/*赋值语句方式*/total1=num1+MULTI;total2=2*num2+MULTI;/*变量使用前要定义*/,赋值,?,怎样知道它是否运行?我们需要用某种方式显示结果。,C语言的基本数据类型及其运算,变量的引用原则,在C语言程序设计中,变量必须遵循“先定义,后使用”的原则。也就是说在具体使用某个变量之前必须对这个变量定义。,例1:int stroe;STROE=10;,例2:查找错误 main()int i,j;i=10;j=20;k=30;sum=i+j;int sum;,非法:C编译系统会认为STORE未被定义,k未定义既被赋值,先使用,后定义,C语言的基本数据类型及其运算,2.3 C语言的运算符,用来表示各种数据操作的符号称之为运算符。,C语言的运算符有以下几类:(1)算术(自增/自减)运算符:(+,*,/,%、+、-)(2)关系运算符:(,=,、|、&)(5)赋值运算符:(=)(6)条件运算符:(?:)(7)逗号运算符:(,)(8)指针运算符:(*,&)(9)强制类型转换运算符:(type)(10)分量运算符:(和)(11)下标运算符:()(12)函数调用运算符:(()),对运算符的掌握应从三个方面着手:和操作符相关的数据类 型(包括操作数和操作 结果的数据类型);运算符的优先级;运算符的结合次序;,C语言的基本数据类型及其运算,2.4 C语言的表达式,概念:表达式是由常量、变量、函数通过运算符连接起来而形成 的一个算式。,求值过程:表达式的求值过程实际上是一个数据加工的过程,通过 各种不同的运算符,可以实现不同的数据加工。表达式 代表了一个具体的值。必须按C规定的原则求值。,特别地:一个常量、一个变量、一个函数都可以看成是一个表达式。,算术表达式,如:3+4*5赋值表达式,如:a=3关系表达式,如:5b逻辑表达式,如:35&a=b条件表达式,如:ab?a:b逗号表达式,如:a=3,b=4,c=5指针表达式,如:p-2,&a(在指针一章介绍),C语言允许使用以下类型表达式:,练习,C语言的基本数据类型及其运算,表达式的求值原则:,在一个表达式中可以包含不同类型的运算符。例如:a+bc&c+d=e+(c=f),根据什么原则进行运算呢?,C语言规定了运算符的优先级和结合性。,注意:(1)可以通过括号()来改变表达式求值的顺序。(2)表达式求值过程中存在类型转换。,在表达式求值时,先按运算符的优先级级别的高低次序执行。如果运算符两侧的优先级级别相同,则按规定的“结合方向”处理。,C语言的基本数据类型及其运算,类型转换,如果同一个表达式中含有不同类型的常量和变量,C语言则在计算该表达式时会自动转换为同一种数据类型以便进行运算。这种由一种数据类型到另一种数据类型的转换被称为类型转换。,在C语言中,类型转换可能发生在赋值运算、算术表达式和输出时。,(1)赋值运算的类型转换,转换原则:当赋值运算符“=”右侧表达式的值被计算出来后,不论是什么类型都一律转换为“=”左侧的变量的类 型,然后再赋值给左侧的变量。,例如:float a;a=10;,例如:int a;a=15.3;,其结果为a=10.0(数据填充),注意:在赋值类型转换时要注意数值的范围不能溢出。演示26.c,其结果为a=15(数据截取),C语言的基本数据类型及其运算,(2)算术运算的类型转换,转换原则:“类型提升”。,如果一个运算符有两个不同类型的运算分量,那么在运算前,先将较低类型的数据提升为较高的类型,从而使两者的数据类型一致,然后再进行计算,其结果是较高类型的数据。类型的高低是根据其数据所占内存空间的大小来判定的,占用空间越大,类型越高。反之越低。,int,char,short,unsigned,long,double,float,低,高,?问题:char a;long b;float c;则3*a+b+c的结果是什么类型?,C语言的基本数据类型及其运算,(3)输出时类型转换,在数据输出时发生的类型转换。同样要遵守“类型提升”的原则。,例如:printf(“%f”,10);,注意:1.数据类型的转换通常是由编译系统来自动进行的,一般情况下,不需要程序员人工编写程序干预,所以又被称为隐式类型转换。2.如果要求一定将数据的类型从某种类型转换为另外一种类型,则 需要人工编程进行强制类型转换,也叫显式转换。其格式如下:(type)表达式,例如:(int)4.2的结果是4;,类型转换的实际情况是:字符型到整型是取字符的ASCII码值;整型到字符型只是去掉多余的高位;实型到整型要去掉小数部分;双精度实型到实型是舍入的;,表达式,C语言的基本数据类型及其运算,算术表达式,由算术运算符连接数值型运算对象构成,其结果可以是整数、单精度实数和双精度实数。,例如:int a=2;float b=4.5;表达式 2*a+b 的结果为8.5。,注意:两个整数相除其结果仍为整数(即舍去小数部分)。例如:13/10的结果为1。“%”为求余运算符,要求参与运算的两个数均为整数。除以0在计算机系统中是没有意义的。,C语言的基本数据类型及其运算,注意:1.自增和自减只能作用于变量,不允许对常量、表达式或其它进行 操作。2.当自增/自减变量值本身就单独构成一条语句时,前缀和后缀的 效果是一样的。3.对于“+”和“-”的使用要避免二义性。,自增/自减:“+”与“-”的作用是使变量的值增1或减1。C语言提供两种形式的+/-运算符:,+a,-a(前缀运算:先进行增量运算后使用)a+,a-(后缀运算:先使用后进行增量运算),比较难掌握的自增/自减运算符,主要是运算结果的确定和多个+/-号连在一起时的区分问题。,C语言的基本数据类型及其运算,问题?如何理解A+B?,C语言对这种情况作了规定:自左向右取尽可能多的符号组成运算符,所以A+B应理解为(A+)+B。2A.C,副作用:副作用是指语句执行主操作时所附带执行的操作。例如:下面合法的C代码:a=5;b=+a;,/*将a赋值给b的操作时a的值增1。*/,C语言的基本数据类型及其运算,main()演示28.c int a=2,b=2,y1,y2;y1=+a;y2=b-;printf(“y1=%d,a=%d”,y1,a);printf(“y2=%d,b=%d”,y2,b);,结果:y1=3,a=3 y2=2,b=1,算术,C语言的基本数据类型及其运算,赋值表达式,由赋值运算符“=”连接表达式(右侧)和变量(左侧)。既将赋值运算符右侧的表达式的结果值赋予赋值运算符左侧的变量,其最后的结果与变量的值相同。,形式:=,常量、变量、表达式和另一个赋值表达式,例如:int a=2,float b=5.2,c;c=a*b;,结合性:自右向左,注意:“=”不是数学中的“等号”,它表示一个动作。右侧的值送与左侧 的变量中(左侧只允许是变量,不能是表达式或其他)。赋值运算符两侧的类型要求一致,否则要进行类型转换。赋值表达式后面不能有“;”。有则为赋值语句。复合赋值运算符:C语言提供了某些赋值语句的简写形式。例如:x=x+2;其简写形式为x+=2;赋值运算符=,相等运算符=,和一般习惯有所不同。,赋值,C语言的基本数据类型及其运算,关系表达式,关系运算符中的“关系”二字的含义是指一个值与另一个值之间的关系。,关系由关系运算符(,=,=,!=,=)连接表达式构成,其结果为整型值(0与1(逻辑假与逻辑真)。,形式:OP,优先级:(,=,=)高于(!=,=),表达式可以是常量、变量、算术表达式或关系表达式,结合方向:自左向右,例如:int a=2;float b=3.4;,ab的结果值为1(真),a+b b的结果值为0(假),a b b的结果为1,关系,C语言的基本数据类型及其运算,逻辑表达式,“逻辑”是指连接关系的方式。,由逻辑运算符(&、|、!)连接的表达式构成。其结果为整数值0(逻辑假)或1(逻辑真)。,形式:OP,优先级:逻辑非(!)的级别高于算术运算符,而逻辑与和逻辑或 的优先级(相同)低于关系运算符。,表达式可以是常量、变量、或其他表达式,结合方向:自左向右,例如:int a=3,b=4,c=5;,(ac)为0,注意:1.对于逻辑表达式A&B(与运算),只有当A与B的值全部为真时,A&B的结果值为真,否则为假。2.对于逻辑表达式A|B(或运算),只要A或B的值有一个为真时,A|B的结果值为真,只有当A与B的值全部为假时,A|B的结果值为假。3.对于逻辑表达式!A(非运算),当A的值为假(0),则!A的值为真(1);若A的值非0,则!A的值为0。,逻辑,C语言的基本数据类型及其运算,条件表达式,由条件运算符连接它的三个运算对象构成的表达式称之为条件表达式,其结果可以是任何类型。,形式:?:,优先级:高于赋值运算符结合方向:自右向左,执行过程是:求解表达式1的值?为真:求解表达式2的值,并将表达式2的值作为整个条件表达式的结果值;为假:求解表达式3的值,并将表达式3的值作为整个条件表达式的结果值。,例如:int a=2;float b=5.2;求!a?2*b:b的结果。,注意:条件运算符的优先级高于赋值运算符,而低于算术运算符和关 系运算符。所以(xy)?x:(y+1)等同于xy?x:y+1条件表达式中,三个运算对象的类型可以不相同。例如:x?a:0.5条件运算遵循“自右向左”方向的结合原则。所以 xy?x:zw?z:w 等同于xy?x:(zw?z:w),条件,C语言的基本数据类型及其运算,执行过程:先求解表达式1的值,再求解表达式2的值,最后求解表达式n的值,并将表达式n的值作为整个表达式的结果值。,逗号表达式,由逗号连接符(,)与表达式构成。其结果为最后一个表达式的结果值。可以是任何类型。,形式:,,优先级:级别最低(既最后进行逗号运算)结合方向:自左向右,例如:int a=2;float b=5.2;2*a,2*b的结果值是多少?,注意:(1)不是出现逗号的地方都是逗号表达式,逗号在C语言中用于 语句之中的参数分隔符。(2)在多数情况下,使用逗号表达式的目的是要分别求出每个表 达式的结果值。这在循环结构中经常使用。(3)逗号运算符,的优先级要比赋值运算符=的优先级低,所 以a=b,c和a=(b,c)的值不同。,条件,C语言的基本数据类型及其运算,【例1】设a=3,b=-4,c=5,表达式a+b,b*5,a=b+4的值?,0,【例2】设int x,a;表达式x=(a=4,6*2)的x值?表达式x=a=4,6*2的x值?,x为12,为4,【例3】设 int b=7;float a=2.5,c=4.7;表达式a+(int)(b/3*(int)(a+c)/2)%4的值?,5.500000,【例4】int x=10,y=9;int a,b,c;a=(-x=y+)?x:-y;b=x+;c=y;a,b,c的结果是?,分别为8,8,10,【例5】若a和b均为int类型的变量,则执行 下面程序段后的输出结果是:x=15;y=5;printf(“%dn”,x%=(y%=2);答案:A.0;B.1;C.6;D.12;,A正确15/1的余数为0。,C语言的基本数据类型及其运算,【例7】若定义x,y为double型,则表达式x=1,y=x+3/2的值是?,2.0,【例6】执行下面程序段后,演示29.c int a=1,b=1,c=1;a=a+b+c+;printf(“%d,%d,%d”,a,+b,c+);输出结果为:A.4,3,2;B.3,3,2;C.3,3,3;D.3,2,2;,C语言的基本数据类型及其运算,【例8】若变量已经定义并赋值,下面夫和C语言与法的表达式是:A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b,【例8】若a为int类型,且值为3,则执行完表达式a+=a-=a*a后,a的值是多少?A)-3 B)9 C)-12 D)6,思考题:+a与a+的区别是什么?在C语言程序设计过程中,如何使用变量和常量?,小结:,常见的程序设计错误:除以0 会导致致命的错误将+/-运算符运用到非简单变量的表达式中将二目运算符分开书写/方向写反会导致语法错误“=”与“=”运算符混淆良好的程序设计习惯:用做变量的标识符应该采用小写字符选择有意义的单词做变量名在二目运算符的两侧增加空格可以提高程序可读性在进行表达式求值时,应参考运算符优先级/结合性 表,确保表达式中运算符的正确执行顺序,C语言的基本数据类型及其运算,