C语言第3章数据类型课件.ppt

上传人(卖家):晟晟文业 文档编号:5100799 上传时间:2023-02-11 格式:PPT 页数:52 大小:596.01KB
下载 相关 举报
C语言第3章数据类型课件.ppt_第1页
第1页 / 共52页
C语言第3章数据类型课件.ppt_第2页
第2页 / 共52页
C语言第3章数据类型课件.ppt_第3页
第3页 / 共52页
C语言第3章数据类型课件.ppt_第4页
第4页 / 共52页
C语言第3章数据类型课件.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、1第 3 章 数据类型、运算符及表达式p 基本数据类型的存储方式和表示方式基本数据类型的存储方式和表示方式p 不同类型间数据转换的原则与方法不同类型间数据转换的原则与方法p 有关运算符与表达式的运用有关运算符与表达式的运用2 一个一个C C程序是由一个或多个函数组成,函数体由程序是由一个或多个函数组成,函数体由若干条若干条C C语句组成,那么,语句组成,那么,C C语句又是由什么组成?语句又是由什么组成?思考思考主函数主函数函数函数nC语句语句1C语句语句2C语句语句n关键字关键字标识符标识符字符集字符集C程程序序3注意:所有关键字都要用小写英文字母表示,注意:所有关键字都要用小写英文字母表示

2、,且不允许被用作标识符使用!且不允许被用作标识符使用!autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile4w 标识符标识符是由英文字母、数字及下划线构成是由英文字母、数字及下划线构成的字符串,并且的字符串,并且首字符首字符必须为字母或下划线。必须为字母或下划线。w 用来标识常量、变量、函数名、数组名、类用来标识常量、

3、变量、函数名、数组名、类型定义符等。型定义符等。w 注意:注意:关键字关键字是用户标识符的禁区!是用户标识符的禁区!w 命名原则:见名知意!命名原则:见名知意!大小写大小写有区别!有区别!w 不同不同C C语言版本允许的长度不一样语言版本允许的长度不一样 ANSI CANSI C为为8 8个字符个字符 Turbo C Turbo C 为为32325练习:请找出不合法的标识符.unionabc_1232ab3 d+babc8*INTstu_bc8abcdefghi-s10*&%$#abc.1236 字符集指的是程序设计语言中所采用的各种符号的集合,字符集指的是程序设计语言中所采用的各种符号的集合

4、,如字母、数字、标点符号、运算符号等。如字母、数字、标点符号、运算符号等。字符是组成语言的最基本的元素。字符是组成语言的最基本的元素。C C语言字符集语言字符集7数组数组结构结构 struct联合联合 union基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void整型整型int字符型字符型char实型实型(浮点型浮点型)单精度型单精度型 float双精度型双精度型double枚举类型枚举类型在程序中对用到的所有数据都必在程序中对用到的所有数据都必须指定其数据类型须指定其数据类型8&常量的定义:常量的定义:在程序执行过程中值不发生改变的量。在程序执行过程中值不发生改变的量。&常量

5、的分类:常量的分类:v 按按数据类型数据类型分类分类整型常量整型常量 4 -3 037 0 xff4 -3 037 0 xff实型常量实型常量 -0.001 128.8 1.25e-3-0.001 128.8 1.25e-3 字符常量字符常量 1 a D 1 a D v 按按表现形态表现形态分类分类字面常量或直接常量字面常量或直接常量符号常量符号常量关于常量关于常量9&概念概念&定义形式定义形式v 含义清楚含义清楚v 在需要改变一个常量时能做到一在需要改变一个常量时能做到一改全改改全改v 一般用大写字母表示一般用大写字母表示&符号常量在程序中的应用符号常量在程序中的应用#define PI 3

6、.1415926#include void main()float r,a,c;r=2.5;a=PI*r*r;c=2*PI*r;printf(“r=%f,a=%f;c=%fn”,r,a,c);10关于变量关于变量&变量的定义变量的定义 变量是程序执行过程中其值可以改变的量。变量是程序执行过程中其值可以改变的量。&变量的分类变量的分类 整型变量整型变量 实型变量实型变量 字符变量字符变量&变量的命名变量的命名(同标识符的命名同标识符的命名)&变量的使用变量的使用v 先定义后使用,每一个变量指定为一确定类型先定义后使用,每一个变量指定为一确定类型v 含义清楚含义清楚 count name dayc

7、ount name dayv 一般用小写字母表示一般用小写字母表示11-十进制数十进制数 如:如:12、345、0 -八进制数八进制数(以以0开头开头)如:如:012、045-十六进制数十六进制数(0 x开头开头)如:如:0 x12、0 x345整型常量整型常量0123 ()100X123()100XFF ()1083255291例例 30000为为int型型 65536为为long int型型例例 12与与12L整型常量的类型:整型常量的类型:-根据其值所在范围确定其数据类型;根据其值所在范围确定其数据类型;-在整常量后加字母在整常量后加字母L或或l,认为它是,认为它是long int型常量

8、。型常量。十进制无符号整常数的范围为十进制无符号整常数的范围为065535,有符号数为有符号数为3276832767八进制无符号数的表示范围为八进制无符号数的表示范围为00177777十六进制无符号数的表示范围为十六进制无符号数的表示范围为0X00XFFFF12整型常量举例整型常量举例#include void main()printf(“%d,%o,%xn”,123,123,123);printf(“%d,%o,%xn”,023,023,023);printf(“%d,%o,%xn”,0 x12,0 x12,0 x12);例:整型常量的不同进制表示。例:整型常量的不同进制表示。%d,%o,%

9、x是输入输出是输入输出的格式字符串的格式字符串d表示十进制表示十进制o表示八进制表示八进制x表示十六进制表示十六进制上述程序中的上述程序中的表示输出后回车换行!表示输出后回车换行!13 分分 类类l基本型基本型(int)l短整型短整型(short int、short)l长整型长整型(long int、long)l无符号型无符号型-无符号整型无符号整型(unsigned int)-无符号短整型无符号短整型(unsigned short)-无符号长整型无符号长整型(unsigned long)整型变量整型变量取值范围取值范围-3276832767-3276832767-21亿亿21亿亿065535

10、065535 042亿亿所占位数所占位数16163216163214整型变量在内存中存储整型变量在内存中存储高字节低字节符号位符号位 0 0表示正整数表示正整数 1 1 表示负整数表示负整数采用补码表示采用补码表示v 正整数补码与原码相同正整数补码与原码相同v 负整数补码负整数补码 =原码(取反)原码(取反)+1+1例如例如 47 0 x2F原码原码 0000,0000,0010,1111取反取反 1111,1111,1101,0000加加1得到得到-47的补码的补码 1111,1111,1101,0001取值范围:取值范围:-215 215-1 -327683276715整型变量定义整型变量

11、定义l 定义形式定义形式 数值类型数值类型 变量名表;变量名表;l 说明说明-数值类型数值类型即类型说明符即类型说明符intint、shortshort、longlong等。等。-变量名表变量名表可为一个或多个可为一个或多个变量名,之间用逗号间隔。变量名,之间用逗号间隔。-变量被定义后,其取值范变量被定义后,其取值范围也被确定。围也被确定。#include void main()int a,b,c;a=4;b=5;c=a*b;printf(“a*b=%dn”,c);等价于:int a;int b;int c;16#include void main()int a,b;a=32767;b=a+1

12、;printf(“%d,%d”,a,b);运行结果:运行结果:32767,327680 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1a:b:1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0整型数据的溢出整型数据的溢出32767-32768溢出不报错溢出不报错会出现不可预料后果会出现不可预料后果17使用整型数据时的注意事项:使用整型数据时的注意事项:3.3.其值在其值在-2-231312 23131-1-1内,而在内,而在-2-215152 21515-1-1外的整数只可赋值外的整数只可赋值给给longlong intint a;a=111111;a;a=111111

13、;不报错但结果不对不报错但结果不对4.4.常量无常量无unsignedunsigned型,但一个非负整数可赋值给型,但一个非负整数可赋值给unsignedunsigned型型整数变量整数变量 ,但要注意值的范围。但要注意值的范围。unsigned a;a=unsigned a;a=10;10;不报错但结果不对不报错但结果不对183.4 3.4 浮点型数据浮点型数据l 浮点型常量浮点型常量即实数。以十进制形式表示。即实数。以十进制形式表示。l 表示形式表示形式-小数形式:小数形式:由数字和小数点组成由数字和小数点组成 如如1.56、-0.231-指数形式指数形式(科学计数法科学计数法):小数小数

14、E(E(或或e)e)整数整数 “小数小数”表示实数的数值位,即尾数部分。表示实数的数值位,即尾数部分。“E”E”代表十进制数的基数代表十进制数的基数1010。“整数整数”表示表示1010的乘幂。的乘幂。浮点型常量浮点型常量1.231.2310103 33.918e-23.918e-21.23E31.23E33.9183.9181010-2-2注意:字母注意:字母E之前必须之前必须有数字!有数字!19浮点型变量浮点型变量 分分 类类l单精度单精度(float)l双精度双精度(double)l长长双精度双精度(long double)有效数字有效数字7位 1516位 1819位所占位数所占位数32

15、64128变量的定义变量的定义float x,y;float x,y;/*指定指定x,yx,y为单精度浮点型变量为单精度浮点型变量*/double z;double z;/*指定指定z z为双精度浮点型变量为双精度浮点型变量*/浮点型常量不分浮点型常量不分单、双精度,都按双精度单、双精度,都按双精度double处理处理。一个浮。一个浮点型常量可以赋给一个点型常量可以赋给一个float型或型或double型,根据变量的类型截型,根据变量的类型截取浮点型常量中相应的有效位数字。取浮点型常量中相应的有效位数字。如:如:float a;a=123456.123;20浮点型数据的舍入误差浮点型数据的舍入

16、误差由于浮点型变量的存储单元有限,因而小数部分的有效由于浮点型变量的存储单元有限,因而小数部分的有效数字是有限的,超过部分将舍去。数字是有限的,超过部分将舍去。/*例例3.4*/#include void main()float a,b;a=123456.789E5;b=a+20;printf(“%f”,b);运行结果:运行结果:12345678848.000000l 避免大数与很小数直接加减避免大数与很小数直接加减l 判断两个浮点型变量是否相等,判断两个浮点型变量是否相等,是判断二者的差的绝对值是否小是判断二者的差的绝对值是否小于一个很小的数于一个很小的数21变量初始化变量初始化:定义时赋初

17、值定义时赋初值变量的使用:变量的使用:先定义,后使用先定义,后使用变量定义位置:一般放在函数开头变量定义位置:一般放在函数开头例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;例1 int student;stadent=19;/Undefined symbol statent in function main 例2 float a,b,c;c=a%b;/Illegal use of floating point in function main#include void main()int a,b=2;

18、float data;a=1;data=(a+b)*1.2;printf(“data=%fn”,data);变量定义可执行语句#include void main()int a,b=2;a=1;float data;data=(a+b)*1.2;printf(“data=%fn”,data);223.5 3.5 字符型数据字符型数据l 概念:概念:指用指用单引号单引号(撇号撇号)括起来的括起来的单个单个字符。字符。例例 a b =5a b =5l 字符常量的值:字符常量的值:该字符的该字符的ASCIIASCII码值码值字符常量字符常量l 字符常量的分类字符常量的分类-一般字符常量一般字符常量

19、x?a A 2-转义字符常量转义字符常量 以一个反斜杠以一个反斜杠“”开头的字符序开头的字符序列,有特定含义。列,有特定含义。ASCII码(见教材码(见教材P364附录附录A)8 位对字符编码,位对字符编码,码值码值0-255 032 为控制字符(不可印刷字符)为控制字符(不可印刷字符)33-255为可印刷字符为可印刷字符 128-255 为扩展为扩展ASCII码码23转义字符常量表转义字符常量表 101 -A 012 -n376 -x61 -a60 -0 483 -()字符形式字符形式功能功能bb退格退格(Backspace)(Backspace)tt横向跳格横向跳格vv竖向跳格竖向跳格nn

20、换行换行rr回车不换行回车不换行ff换页换页表示反斜杠表示反斜杠 表示表示 (单引号单引号)dddddd用三位八进制数表任意字符用三位八进制数表任意字符(ASCII(ASCII值值)xhhxhh用两位十六进制数表示任意字符用两位十六进制数表示任意字符(ASCII(ASCII值值)24#include void main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);运行结果:运行结果:(屏幕显示屏幕显示)A B CI say:”How are you?”C ProgramTu

21、rbo C例例#include void main()printf(“Yb=n”);运行结果:运行结果:屏幕显示:屏幕显示:=打印机输出:打印机输出:转义字符的使用转义字符的使用25运行结果:屏幕显示:屏幕显示:屏幕输出在后面的字符会取代原来屏幕上屏幕输出在后面的字符会取代原来屏幕上该位置上显示的字符该位置上显示的字符#include void main()printf(“_ab_ct_derftgn);printf(htibbj_k);fg d ehjk打印机输出:打印机输出:f a bcg d ehj i k转义字符的使用转义字符的使用26字符变量字符变量l字符变量用来存字符变量用来存放字

22、符常量。放字符常量。l一个字符变量只一个字符变量只能存放一个字符能存放一个字符常量。常量。l一个字符变量在一个字符变量在内存中占用内存中占用一个一个字节字节的空间。的空间。l字符变量的定义格式:字符变量的定义格式:char char 变量名表;变量名表;l字符变量的赋值:字符变量的赋值:变量名字符常量;变量名字符常量;变量名整型数据;变量名整型数据;l举例:举例:char cchar c;char ch1,ch2;char ch1,ch2;c=97;ch1=B;ch2=c=97;ch1=B;ch2=C;C;27#include void main()char c1,c2;c1=97;c2=98

23、;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);#include void main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c,%c”,c1,c2);运行结果:运行结果:A,B运行结果:运行结果:a,b97,9828#define PRICE 12.5#include void main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1)

24、;变量定义变量定义宏定义宏定义输出结果输出结果运行结果:total=37.50000,ch1=d29 分分 类类l基本型基本型(int)l短整型短整型(short int、short)l长整型长整型(long int、long)l无符号型无符号型-无符号整型无符号整型(unsigned int)-无符号短整型无符号短整型(unsigned short)-无符号长整型无符号长整型(unsigned long)整型变量整型变量取值范围取值范围-3276832767-3276832767-21亿亿21亿亿065535065535 042亿亿所占位数所占位数16163216163230浮点型变量浮点型

25、变量 分分 类类l单精度单精度(float)l双精度双精度(double)l长长双精度双精度(long double)有效数字有效数字7位 1516位 1819位所占位数所占位数326412831字符变量字符变量l字符变量用来存字符变量用来存放字符常量。放字符常量。l一个字符变量只一个字符变量只能存放一个字符能存放一个字符常量。常量。l一个字符变量在一个字符变量在内存中占用内存中占用一个一个字节字节的空间。的空间。l字符变量的定义格式:字符变量的定义格式:char char 变量名表;变量名表;l字符变量的赋值:字符变量的赋值:变量名字符常量;变量名字符常量;变量名整型数据;变量名整型数据;l

26、举例:举例:char cchar c;char ch1,ch2;char ch1,ch2;c=97;ch1=B;ch2=c=97;ch1=B;ch2=C;C;32l 概念:字符串常量是指用一对概念:字符串常量是指用一对括起来的括起来的。如。如“Hello”Hello”、“good”good”等。等。l 字符串常量的存储:字符串常量的存储:-系统系统在字符串的末尾加上一个字符串结束标在字符串的末尾加上一个字符串结束标记记00,以此判断字符串是否结束。,以此判断字符串是否结束。-程序中长度为程序中长度为n n个字符的字符串常量,在内存中个字符的字符串常量,在内存中需要用需要用n+1n+1个字节空间

27、来存储它。个字节空间来存储它。字符串常量字符串常量string01151161141051101030例字符串例字符串“string”string”的存储的存储33 如:如:aa是字符常量,而是字符常量,而“a”a”是字符串常量。是字符串常量。如:如:aa在内存中只占在内存中只占1 1个字节,个字节,“a”a”则需占用则需占用2 2个字节个字节空间。空间。如:如:chch=a=a 是正确的;而是正确的;而chch=“a”=“a”不正确。不正确。34允许定义变量的同时使变量初始化允许定义变量的同时使变量初始化例如例如:int a=3;等价于等价于 int a;a=3;允许只对其中一部分变量赋初值

28、允许只对其中一部分变量赋初值例如:例如:int a=3,b,c=4;若有几个变量初值相同,必须分别赋值若有几个变量初值相同,必须分别赋值例如:例如:int a=2,b=2,c=2;3.6 3.6 变量赋初值变量赋初值int a=b=c=2;对字符型变量初始化时,既可以将字符用单引号对字符型变量初始化时,既可以将字符用单引号括起来直接赋值,也可以使用该字符的括起来直接赋值,也可以使用该字符的ASCIIASCII码码进行赋值。进行赋值。例如:例如:char ch=A;等价于等价于 char ch=65;35 程序运行时,变量的值以程序运行时,变量的值以二进制二进制的形式存的形式存储在内存中。存储空

29、间的大小由变量的数据类储在内存中。存储空间的大小由变量的数据类型决定。型决定。内存的编址:内存的编址:36不同类型的数据混合运算,先转换成同一类型,然后进行运算。不同类型的数据混合运算,先转换成同一类型,然后进行运算。3.7 3.7 各类数值型数据间的混合运算各类数值型数据间的混合运算doublefloatlongunsignedintchar,short例例 char ch;int i;float f;double d;ch/i +f*d -(f+i)intdoubledoubleintdoubledoubledoubledouble37q 隐式转换隐式转换v运算转换运算转换-不同类型数据混

30、合运算时不同类型数据混合运算时v赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时v输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式v函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换q 显式转换(强制转换)显式转换(强制转换)一般形式:(类型名)(表达式)一般形式:(类型名)(表达式)例例 (int)(x+y)(int)x+y(int)(x+y)(int)x+y (double)(3/2)(int)3.6 (double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变说明:强制转

31、换得到所需类型的中间变量,原变量类型不变 可能发生较高类型向较低类型转换可能发生较高类型向较低类型转换不同类型数据间的转换不同类型数据间的转换/*例例3.8*/#include void main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:结果:x=3.600000,i=338例如:习题例如:习题3.9(1)x+a%3*(int)(x+y)%2/4x=2.5,a=7,y=4.72.5+7%3*(int)(2.5+4.7)%2/42.5+7%3*(int)(7.2)%2/42.5+1*7%2/42.5+7%2/42.5+1/

32、42.5+02.539按照运算类型分按照运算类型分 算术运算符算术运算符 +、-、*、/、%关系运算符关系运算符 、=、=、!=逻辑运算符逻辑运算符 !、&、|位运算符位运算符 、|、&赋值运算符赋值运算符 =、+=、-=、*=、/=、%=条件运算符条件运算符?:逗号运算符逗号运算符 ,指针运算符指针运算符 *、&求字节数运算符求字节数运算符 sizeof 强制类型转换运算符强制类型转换运算符(类型)(类型)分量运算符分量运算符 .(点点)、下标运算符下标运算符 其他函数调用运算符其他函数调用运算符 ()附录附录CC C 运算符简介运算符简介40 按照运算对象分按照运算对象分 单目运算符:!单

33、目运算符:!双目运算符:双目运算符:+、-三目运算符:?三目运算符:?:41 学习运算符应注意:学习运算符应注意:运算符功能运算符功能 与运算量关系与运算量关系要求运算量个数要求运算量个数要求运算量类型要求运算量类型 运算符优先级别运算符优先级别 结合方向结合方向 结果的类型结果的类型赋值运算符与赋值表达式赋值运算符与赋值表达式逗号运算符与逗号表达式逗号运算符与逗号表达式逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式算术运算符与算术表达式算术运算符与算术表达式优先级别优先级别低低高高关系运算符与关系表达式关系运算符与关系表达式42例 5/2 =5/-2 =-5/2.0 =例例 5%2 =-5%2

34、 =1%10 =5%1 =5.5%22-2 -2.51 -110()基本算术运算符:基本算术运算符:+-*/%q 优先级:优先级:-*/%/%-+-+-结合方向:结合方向:从左向右从左向右q 结果类型:结果类型:先数据转换再运算,若有一个运算数为实数,结果先数据转换再运算,若有一个运算数为实数,结果是是doubledouble型。型。q 两整数相除,结果为整数;两整数相除,结果为整数;两个实数相除,结果为实数。两个实数相除,结果为实数。3.8 3.8 算术运算符和算术表达式算术运算符和算术表达式q%要求两侧均为整型数据要求两侧均为整型数据注意表达式:注意表达式:1/3*31*3/3结果是否一样

35、?结果是否一样?43例例 j=3;k=+j;j=3;k=+j;j=3;k=j+;j=3;k=j+;j=3;printf(“%d”,+j j=3;printf(“%d”,+j););j=3;printf(“%d”,j j=3;printf(“%d”,j+);+);a=3;b=5;c=(+a)a=3;b=5;c=(+a)*b;b;a=3;b=5;c=(a+)a=3;b=5;c=(a+)*b;b;/k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4/4/3/3/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4自增、自减运算符自增、自减运算符 +-使变量值加使变量

36、值加1 1或减或减1 1q+i,-i (+i,-i (在使用在使用i i前,使前,使i i的值加减的值加减1 1)q i+,i-(i+,i-(在使用在使用i i后,使后,使i i的值加减的值加减1 1 )说明:说明:+-+-不能用于常量和表达式不能用于常量和表达式,只能用于变量。只能用于变量。如如 5+5+,(a+b)+a+b)+是不合法的是不合法的结合方向:结合方向:自右向左自右向左优先级:优先级:-+-+-*/%/%-+-+-例例 -i+i+-(i+)-(i+)i=3;printf(“%d”,-ii=3;printf(“%d”,-i+);+);44(1)k=34512 a=6(2)k=33

37、39 a=6例:设例:设a=3 a=3,若执行语句,若执行语句k=(a+)+(a+)+(a+)k=(a+)+(a+)+(a+)后的后的k k值为多少?值为多少?turbo c运行结果运行结果例:例:i+j=(i+i+j=(i+)+j +j 还是还是=i+=i+(+j+j)?)?c编译系统将尽可能多的将多个字符组成一个运算符,编译系统将尽可能多的将多个字符组成一个运算符,并按自左而右的方法并按自左而右的方法为避免误解最好采取都能理解的方法,写成(i+)+j;453.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式简单赋值运算符简单赋值运算符 =变量标识符变量标识符=常量或表达式常量或表达

38、式说明:说明:“”是一个双目运算符,需要左右两个运算量。是一个双目运算符,需要左右两个运算量。“”是赋值运算符,不等于等号,没有相等的含是赋值运算符,不等于等号,没有相等的含义。义。“”左端的运算量必须是单个变量,而不能是表左端的运算量必须是单个变量,而不能是表达式。达式。赋值运算中,使运算符左端的变量具有右端表达式赋值运算中,使运算符左端的变量具有右端表达式的值。的值。46(1)a=a+1;(1)a=a+1;等价于:等价于:a+;a+;(2)a=b=c=2;(2)a=b=c=2;连续赋值连续赋值等价于:等价于:a=(b=(c=2);a=(b=(c=2);或者或者:a=2;b=2;c=2;a=

39、2;b=2;c=2;(3)a=2+(b=3);(3)a=2+(b=3);等价于:等价于:b=3;a=2+3=5;b=3;a=2+3=5;(4)a=(b=2)(4)a=(b=2)*(c=3);(c=3);等价于:等价于:b=2;c=3;a=2b=2;c=3;a=2*3=6;3=6;允许赋允许赋值表达式中含值表达式中含有另外的赋值有另外的赋值表达式,进行表达式,进行连续赋值连续赋值举举 例例47a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3复合赋值运算符复合赋值运算符+=*=/=%=&=|=在在“=”=”之前加上之前加上其他运算其他运算符符48赋值表达式赋值表达式由赋值运算符将

40、一个变量和一个表达式连接起来的式子由赋值运算符将一个变量和一个表达式连接起来的式子v结合方向:自右向左结合方向:自右向左3=x-2*y;a+b=3;a=b=c=5a=b=c=5a=(b=5)a=(b=5)a=5+(c=6)a=5+(c=6)a=(b=4)+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a=(b=10)/(c=2)/表达式值为表达式值为5 5,a,b,ca,b,c值为值为5 5/b=5;a=5/b=5;a=5/表达式值表达式值1111,c=6,a=11c=6,a=11/表达式值表达式值1010,a=10,b=4,c=6a=10,b=4,c=6/表达式值表达式值5

41、 5,a=5,b=10,c=2a=5,b=10,c=2a+=a-=aa+=a-=a*a a()a+=aa+=a*=a-=a=a-=a*=3=3()()()v 优先级优先级:很低,仅高于逗号运算符很低,仅高于逗号运算符v 左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式v赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套49赋值运算中数值类型的转换赋值运算中数值类型的转换v int int=float=float:舍弃实数的小数部分。:舍弃实数的小数部分。int i=3.56;i=3float f=23;f=23.00000v float、double=i

42、nt:数值不变,但以浮点数形式存储。数值不变,但以浮点数形式存储。v float=double:截取前面截取前面7 7位有效数字,但数值范围不能溢位有效数字,但数值范围不能溢出。出。v double=float:数值不变,有效位数扩展到数值不变,有效位数扩展到1616位。位。v int=char:字符字符ASCIIASCII码放到整型变量的低码放到整型变量的低8 8位。位。u 如果为无符号变量,则高如果为无符号变量,则高8 8位补位补0 0。u 如果为符号变量,若字符最高位为如果为符号变量,若字符最高位为0 0,则高,则高8 8位补位补0 0;若;若字符最高位为字符最高位为1 1,则高,则高8

43、 8位补位补1 1;int c=376;1111111011111111unsigned0000000050v char=int/short/long:只将其低8位送到char型变量(截断)。char c=289;0010000100000001c=33v long=int:将将2bytes送入低送入低16位,高位,高16位进行符号扩展。位进行符号扩展。v int=long:只将低只将低16位送入,注意溢出。位送入,注意溢出。v long(int,short)=unsigned int:不进行符号扩展,高位补:不进行符号扩展,高位补0。v unsigned非unsigned:原样赋出。/*例例

44、3.9 有符号数传送给无符号变量有符号数传送给无符号变量*/#include void main()unsigned a;int b=-1;a=b;printf(“%u”,a);6553551形式:形式:表达式表达式1,1,表达式表达式2,2,表达式表达式n n结合性结合性:从左向右从左向右优先级优先级:15 15 在所有运算符中级别最低在所有运算符中级别最低逗号表达式逗号表达式的值:的值:等于表达式等于表达式n n的值的值用途:用途:常用于循环常用于循环forfor语句中语句中3.10 3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式用逗号将两个表达式连接起来用逗号将两个表达式连接起来顺序求值运算符顺序求值运算符a=3*5,a*4a=3*5,a*4,a+5x=(a=3,6*3)x=a=3,6*aa=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);52作业:作业:3.4 3.6 3.7 3.9 3.4 3.6 3.7 3.9 3.10 3.123.10 3.12

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言第3章数据类型课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|