-C语言基础课件.ppt

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

1、1第第2 2章章 C C语言基础语言基础 2.1 2.1 数据类型数据类型 2.2 2.2 标识符、常量和变量标识符、常量和变量 2.3 2.3 基本类型数据基本类型数据2.4 2.4 运算符及表达式运算符及表达式2数据类型数据类型基本类型基本类型(简单)(简单)构造类型构造类型 指针类型指针类型空类型空类型 数组类型数组类型结构体类型结构体类型共用体类型共用体类型标准类型标准类型用户自定义类型:用户自定义类型:整型整型实型实型字符型字符型单精度型单精度型双精度型双精度型枚举类型枚举类型2.12.1 数据类型数据类型32.22.2 标识符、常量与变量标识符、常量与变量1 1、字符集、字符集 C

2、 C语言字符集由以下几部分组成:语言字符集由以下几部分组成:字母:大、小写英文字母共字母:大、小写英文字母共5252个。个。数字:数字:0 09 9共共1010个个 空白符:空格符、制表符、换行符等统称为空白符共空白符:空格符、制表符、换行符等统称为空白符共3 3个。个。标点和特殊字符:标点和特殊字符:+-+-*/%_ .=&/%_ .=&|();?:”!#|();?:”!#等等2525个。个。4标识符是指用来标识变量名、符号常量名、函数名、文件标识符是指用来标识变量名、符号常量名、函数名、文件名以及一些具有专门含义的有效字符序列。名以及一些具有专门含义的有效字符序列。以字母或下划线以字母或下

3、划线(_)(_)开头,由字母、数字、下划线组成的开头,由字母、数字、下划线组成的字符序列。字符序列。如:如:num,a8,no_1 3d,no 1,xk#1(不合法不合法)大写字母和小写字母大写字母和小写字母视为两个不同的字符。视为两个不同的字符。不同的不同的C C语言编译器规定的标识符的长度可能会不同,语言编译器规定的标识符的长度可能会不同,一般规定一般规定取前面取前面8 8个字符个字符,多余的不被识别。例如:,多余的不被识别。例如:student_name和和student_num被认为是相同的标识符被认为是相同的标识符student_。2、标识符标识符:5关键字标识符:关键字标识符:预定

4、义标识符:预定义标识符:用户标识符:用户标识符:代表固定含义,不能另作它用。代表固定含义,不能另作它用。代表特定含义(一般是库函数名和预编代表特定含义(一般是库函数名和预编译处理命令名),一般不另作它用。译处理命令名),一般不另作它用。标识符分类标识符分类定义用户标识符时注意:定义用户标识符时注意:大小写有区分。大小写有区分。如如book,BOOK,Book。标识符做到标识符做到“见名知意见名知意”。如。如average,sum,length等。等。关键字关键字不能作为标识符。如不能作为标识符。如do,int,if 等。等。63 3、常量:、常量:在程序运行过程中,其值在程序运行过程中,其值不

5、能被改变不能被改变的量称为常量。的量称为常量。符号常量:符号常量:#define 符号常量名符号常量名 常量常量#define PI 3.1415926常量类型:常量类型:直接常量:直接常量:算术型运算常量:算术型运算常量:123123,3.14159263.1415926字符型常量:字符型常量:a,”hello”a,”hello”7#include stdio.h#include stdio.h main()main()float radius;float radius;/*radius radius圆的半径圆的半径 */float area,length float area,length

6、;/*area area圆的面积圆的面积 */printf printf(Please input radius:);(Please input radius:);scanf(%f,&radius scanf(%f,&radius););/*输入圆的半径输入圆的半径 */area=area=3.14159263.1415926 *radiusradius*radiusradius;/*计算圆的面积计算圆的面积 */length=2 length=2*3.14159263.1415926 *radius;radius;/*计算圆的周长计算圆的周长*/printf printf(area=%far

7、ea=%f,length=%f,area,lengthlength=%f,area,length););#define PI 3.1415926#define PI 3.1415926PI PI PI PI 【例】计算圆的面积和周长。【例】计算圆的面积和周长。8 程序执行过程中,其值可以被改变的量程序执行过程中,其值可以被改变的量 (1)(1)变量名:变量名:既代表某存储空间,又代表该空间存储的数据。既代表某存储空间,又代表该空间存储的数据。(3)(3)变量的数据类型变量的数据类型:决定了存储空间的大小。决定了存储空间的大小。C C要求要求:变量必须变量必须先声明后使用先声明后使用,指明其数据

8、类型,指明其数据类型 变量定义格式:变量定义格式:数据类型标识符数据类型标识符 变量名表变量名表 如:如:intint a,b,c;float d;a,b,c;float d;(4)(4)变量的地址:即变量所占内存空间的变量的地址:即变量所占内存空间的首字节首字节的编号。的编号。4 4、变量:、变量:a a 6 6(2)(2)变量的值:存放在存储单元中的数据(存储单元内容)。变量的值:存放在存储单元中的数据(存储单元内容)。标识符标识符 9#include stdio.h main()int num;float price,total;num=5;price=3;total=price*num

9、;printf(total=%f,total);【例】用【例】用priceprice代表商品单价、代表商品单价、numnum代表商品数量,然后计代表商品数量,然后计算商品的总价算商品的总价totaltotal。101.1.整型数据类型标识符整型数据类型标识符整型数据有基本型、短整型、长整型和无符号型四种。整型数据有基本型、短整型、长整型和无符号型四种。基本整型(简称整型):类型标识符为基本整型(简称整型):类型标识符为intint。短整型:类型标识符为短整型:类型标识符为short intshort int或或shortshort。长整型:类型标识符为长整型:类型标识符为1ong int1on

10、g int或或1ong1ong。无符号型:表示不带符号的整数。又可分为以下三种:无符号型:表示不带符号的整数。又可分为以下三种:l 无符号整型:类型标识符为无符号整型:类型标识符为unsigned intunsigned int。l 无符号短整型:类型标识符为无符号短整型:类型标识符为unsigned shortunsigned shortl 无符号长整型,类型标识符为无符号长整型,类型标识符为unsigned 1ongunsigned 1ong。一一整型数据整型数据 2.3 2.3 基本类型数据基本类型数据112.3.1 基本数据类型(一)基本数据类型(一)1.整型数据 整型数据分为一般整型

11、(int)、短整型(short)和长整型(long),并且每一种类型又分为带符号(signed)和无符号(unsigned)两种类型。整型数据的特性见下表:数据类型名说明Visual C+6.0环境Turbo C2.0环境字节取值范围字节取值范围short int短整型2-32768327672-3276832767signed short int带符号短整型2-32768327672-3276832767unsigned short int 无符号短整型20655352065535int整型4-214748364821474836472-3276832767signed int带符号整型4-

12、214748364821474836472-3276832767unsigned int无符号整型4042949672952065535long int长整型4-214748364821474836474-21474836482147483647signed long int带符号长整型4-214748364821474836474-21474836482147483647unsigned long int无符号长整型40429496729540429496729512整数在内存中的存储方式:整数在内存中的存储方式:补码补码0000 0000 0000 0000 0000 0010 1010

13、01000000 0010 1010 01000000 0010 1010 01000000 0000 0000 0000 0000 0010 1010 01000000 0000 0000 0000 0000 0010 1010 0100int 型型short 型型long 型型unsigned int 型型unsigned short 型型unsigned long 型型图图2.2 2.2 整型数据整型数据676676的存储情况的存储情况符符号号位位0000 0000 0000 0000 0000 0010 1010 010013原码原码=补码补码=反码反码原码原码原码除符号位其余位取反原

14、码除符号位其余位取反+1+1补码补码正整数:正整数:负整数:负整数:反码反码+1+1如:求如:求-5-5的补码的补码原码:原码:11011101反码反码(在原码基础上,符号位不变,其它在原码基础上,符号位不变,其它位都取反位都取反):10101010补码补码(在反码基础上,加在反码基础上,加1)1):10111011-5+5=0.-5+5=0.而而1011+0101=0.1011+0101=0.所以就是所以就是10111011如何求整数的补码?如何求整数的补码?14例如:例如:intint k;k;long long p,l;p,l;unsigned shortunsigned short n

15、,m;n,m;任何一种数据类型都有常量和变量之分任何一种数据类型都有常量和变量之分2 2、整型变量的定义、整型变量的定义变量定义后,只是在内变量定义后,只是在内存中申请了相应的空间存中申请了相应的空间,此时存储空间中并没,此时存储空间中并没有有意义的数据,即变有有意义的数据,即变量没有量没有确定的值确定的值。15C C语言中整型常量可以用语言中整型常量可以用3 3种形式表示:种形式表示:十进制数,如十进制数,如+123+123,-234-234,0 0,2323;八进制数,如八进制数,如 0 0234234,0 0777777;十六进制数,如十六进制数,如0 0 x234x234,0X9A0X

16、9A。整型数又分为基本整型、短整型、长整型整型数又分为基本整型、短整型、长整型(后加后加l l或或L)L)和无符和无符号整型数号整型数(后加后加u u或或U)U)。前缀、后缀可同时使用以表示不同类型不同进制的整型数。前缀、后缀可同时使用以表示不同类型不同进制的整型数。如如03456LU03456LU表示八进制无符号长整型数。表示八进制无符号长整型数。3 3、整型常量、整型常量16二二.实型数据实型数据1.1.实型数据类型标识符实型数据类型标识符 实型数据有单精度型和双精度型两种。实型数据有单精度型和双精度型两种。单精度型单精度型:类型标识符为:类型标识符为floatfloat。双精度型双精度型

17、:类型标识符为:类型标识符为doubledouble。类型类型 占用字节数占用字节数 有效数字有效数字 数值范围数值范围 float float 4 4 7 7 3.43.4*1010-38-38-3.43.4*10103838double double 8 8 12-16 12-16 1.71.7*1010-308-308-1.71.7*1010308308 17实型数据存储方式:实型数据存储方式:规范化的指数形式规范化的指数形式 假设机器字长为假设机器字长为32位,其指数(即阶码)部分占位,其指数(即阶码)部分占8位,尾数占位,尾数占24位,则如图所示。位,则如图所示。1 1 10101

18、10 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 031302423221 0阶阶符符指数部分指数部分数数符符尾数部分尾数部分二进制数据二进制数据0.00000011101011的存储形式的存储形式指其尾数部分指其尾数部分(M)为纯小数,阶码部分为纯小数,阶码部分(E)为纯整数。为纯整数。N=2E*M182.2.实型变量的定义实型变量的定义float f,f1;/*定义定义f、f1为单精度实型变量为单精度实型变量 */double d;/*定义定义d为双精度实型变量为双精度实型变量 */193.实型常量实型常量(又称实数,只有十进制形式又称实数,只有

19、十进制形式)小数形式小数形式指数形式指数形式由数字和小数点组成由数字和小数点组成(必有小数点,但其前后必有小数点,但其前后0 0可省可省)例如:例如:0.246 .246 5.0 5.0.246 .246 5.0 5.等。等。由小数或整数、字母由小数或整数、字母E E或或e e及指数部分组成。及指数部分组成。(e e前必有前必有数字,后必为整数数字,后必为整数)其格式为:其格式为:整数部分整数部分.小数部分小数部分E E指数部分指数部分例如:例如:135e3 12.12e-5135e3 12.12e-5 .123e4 0e0 .123e4 0e0 e2 3.5e1.5e2 3.5e1.5在程序

20、中,实数可以用小数或指数形式表示,但在内存在程序中,实数可以用小数或指数形式表示,但在内存中,实数都以规范化的指数形式存放。中,实数都以规范化的指数形式存放。201.1.字符型数据类型标识符字符型数据类型标识符 类型标识符为类型标识符为charchar,在内存中存储一个字符型数据,在内存中存储一个字符型数据需要一个字节。需要一个字节。三三.字符型数据字符型数据 21 说明字符变量用说明字符变量用 char char 作标识符作标识符 如:如:char x;char x;一个字符变量在内存中一个字符变量在内存中占一个字节占一个字节,一个字符变量只能存放,一个字符变量只能存放一个字符一个字符 如:

21、如:x=a;x=a;将字符将字符 a a 赋值给字符变量赋值给字符变量 x x 实际上是实际上是把把 a a的的ASCII ASCII 代码值代码值 97 97 放到放到 x x 对应的内存单元中去对应的内存单元中去 字符变量字符变量=字符常量字符常量/字符变量字符变量/0-255/0-255的整数的整数2 2字符型变量的定义字符型变量的定义22 如如:char c1,c2;int i;c1=a;c2=c1-32;i=97;printf(%c,%dn,c1,c1);c1c2i=c1=97;=c2=A;=c2=65;=c2=a-32;=i=a;=printf(%c,%d n,i,i);注意:注意

22、:*在内存中,在内存中,字符数据和整型数据字符数据和整型数据的存储形式相似,所以的存储形式相似,所以在在c c语言中二者可以通用语言中二者可以通用。976597233.3.字符型常量字符型常量 字符常量字符常量:用单引号括起来的用单引号括起来的字符字符。代表代表ASCIIASCII字符集中的一个字符字符集中的一个字符 两种表示形式:两种表示形式:由单引号括起来的由单引号括起来的普通字符常量普通字符常量;如;如AA,a,3,a,3,由单引号括起来的由单引号括起来的转义字符转义字符;如;如nn,tt 24 单引号中的大小写字母代表不同的字符常量。单引号中的大小写字母代表不同的字符常量。如:如:a,

23、Aa,A a a和和a a的区别的区别 是一个字符常量,有一空格,和是一个字符常量,有一空格,和的区别。的区别。单引号中只能包含一个字符单引号中只能包含一个字符 只能用只能用表示字符常量,表示字符常量,“”“”表示的是字符串常量表示的是字符串常量 C C语言规定语言规定:字符型常量在内存中占字符型常量在内存中占8 8位(一个字节)。位(一个字节)。字符常量在内存中实际存储的是其字符常量在内存中实际存储的是其ASCIIASCII码的值码的值 如:如:AA a a 3 3 一、普通字符常量一、普通字符常量656597975151 字符常量和整型常量是可以混用的。字符常量和整型常量是可以混用的。25

24、 以一个以一个反斜线反斜线开头后跟一个特定的字符,代表某一开头后跟一个特定的字符,代表某一特定的特定的ASCIIASCII字符。字符。又称反斜线字符。如:又称反斜线字符。如:n,n,后可跟后可跟8 8进制或进制或1616进制数,表示一个进制数,表示一个ASCIIASCII字符字符 如:如:AA也可用也可用101101或或01010101 x41 x41表示表示(后不允许用后不允许用X X,0 x)0 x)二、转义字符常量二、转义字符常量264 4字符型数据在内存中的存储形式字符型数据在内存中的存储形式c2c10100000100001010图图2.4 2.4 字符型数据的存储字符型数据的存储c

25、har c1,c2;c1=A;c2=n 27【例【例2.32.3】字符型数据的输出。】字符型数据的输出。#include stdio.hmain()char c1;c1=65;printf(%c,%dn,c1,c1);输出结果:输出结果:A,65 A,65 28可对字符数据进行的运算可对字符数据进行的运算 字符型数据可参与任何整数运算字符型数据可参与任何整数运算 如:如:算术运算算术运算 B-A等价于等价于66-65等价于等价于1 a+1等价于等价于971等价于等价于98等价于等价于b 大小写字母的相互转换大小写字母的相互转换:A+32等价于等价于6532等价于等价于97等价于等价于a b-3

26、2等价于等价于98-32等价于等价于66等价于等价于B 数字字符与相应整数值的相互转换数字字符与相应整数值的相互转换:9-0 等价于等价于5748 等价于等价于 9 90 等价于等价于948 等价于等价于 929【例【例】#include stdio.h main()char c1,c2;c1=A;c2=b;c1=c1+32;c2=c2-32;printf(c1=%c,c2=%c,c1,c2);输出结果:输出结果:c1=a,c2=B c1=a,c2=B 30四四.字符串常量字符串常量 用一对用一对双引号双引号括起来的一串字符;如括起来的一串字符;如“hello”,“%d%d”hello”,“%

27、d%d”C C规定:在一个字符串的末尾加一个串结束标志规定:在一个字符串的末尾加一个串结束标志00 在内存中占的字节数在内存中占的字节数=字符个数字符个数+1 +1 如:如:“hello”hello”在内存中的存储形式是在内存中的存储形式是(该字符对应该字符对应ASCIIASCII码值码值):1041041011011081081081081111110 0 为了能直观理解,以后直接用字符本身表示。上例表示成:为了能直观理解,以后直接用字符本身表示。上例表示成:h he el ll lo o00注意:注意:在写字符串时不必加在写字符串时不必加 00,否则画蛇添足。,否则画蛇添足。0 0 字符是

28、字符是系统自动加上的。系统自动加上的。31“”“”和和“”“”的区别的区别字符常量与字符串常量的区别:(字符常量与字符串常量的区别:(bb与与”b”b”)形式上:形式上:括起来的单个字符或以括起来的单个字符或以 开头的一个转义字符开头的一个转义字符 内存表示:都存储内存表示:都存储ASCIIASCII码,但字符常量占码,但字符常量占1 1个字节,转个字节,转义字符也不例外,而字符串常量义字符也不例外,而字符串常量“b”b”占占2 2个字节个字节.注意:注意:C C语言中没有字符串变量,字符串存放在字符数组变量语言中没有字符串变量,字符串存放在字符数组变量或字符指针变量中。或字符指针变量中。32

29、变量赋初值是指在定义变量的同时对变量进行赋值。变量赋初值是指在定义变量的同时对变量进行赋值。例如:例如:intint a=5;a=5;int int a,b,c=10;a,b,c=10;五五.变量赋初值变量赋初值 如果对几个变量赋以同一个初值,不能写成:如果对几个变量赋以同一个初值,不能写成:intint a=b=c=8 a=b=c=8;而应写成:而应写成:intint a=8 a=8,b=8b=8,c=8c=8;33 运算符运算符:算术运算符、关系运算符、赋值运算符、逗号运算符等算术运算符、关系运算符、赋值运算符、逗号运算符等 表达式:由运算对象(常量、变量、函数)、运算符和括号组成表达式:

30、由运算对象(常量、变量、函数)、运算符和括号组成的、有意义的、符合的、有意义的、符合C C语言规定的式子。语言规定的式子。表达式的求值规则:先按运算符的表达式的求值规则:先按运算符的“优先级优先级”由由高到低高到低进行,进行,若级别相同,则按运算符的若级别相同,则按运算符的“结合性结合性”处理。处理。2.5 2.5 运算符和表达式运算符和表达式结合性结合性右结合性右结合性:自右至左的结合方向:自右至左的结合方向 如:如:x=y=zx=y=z左结合性左结合性:自左至右的结合方向:自左至右的结合方向 如:如:x+y-zx+y-z34一、算术运算符和算术表达式一、算术运算符和算术表达式1.1.算术运

31、算符及优先级和结合性算术运算符及优先级和结合性 双目双目:+(+(加法运算符加法运算符)-(减法运算符减法运算符)*(乘法运算符乘法运算符)/(除法运算符除法运算符)%(%(模运算符模运算符 或或 求余运算符求余运算符)说明:说明:1.1.除除,双目运算对象可以是整型、实型。,双目运算对象可以是整型、实型。运算对象运算对象只能是整型只能是整型。2.2.操作数类型一致时运算结果与操作数类型一致。操作数类型一致时运算结果与操作数类型一致。3.3.不一致时不能直接运算,数据类型自动转换不一致时不能直接运算,数据类型自动转换35整除:整整除:整/整整(舍去所有小数部分整整(舍去所有小数部分四舍五入)四

32、舍五入)8/3=28/3=2实除:两实数或与一实数相除双精度型。实除:两实数或与一实数相除双精度型。如如:8/3.0=2.6666666:8/3.0=2.6666666整型整型%整型整型整型整型 如:如:8%3=2 8%3=2 -19%4=-3 -19%4=-3(运算量为负数时,在(运算量为负数时,在VC6.0VC6.0中结中结果的符号与被除数相同)果的符号与被除数相同)/(/(除法运算符除法运算符)%(%(模运算符模运算符 或或 求余运算符求余运算符)36单目:单目:+(+(正值运算符正值运算符)+3)+3 -(-(负值运算符负值运算符)-3 ,-2.0)-3 ,-2.0注:注:1.1.运算

33、符必须出现在运算对象的左边。运算符必须出现在运算对象的左边。2.2.运算对象可以是整型、实型。运算对象可以是整型、实型。2.2.算术运算符和圆括号的优先级:算术运算符和圆括号的优先级:()+-()+-*/%+-/%+-单目单目双目双目同级同级同级同级同级同级结合性:结合性:高高低低双目:从左到右双目:从左到右单目:从右到左单目:从右到左优先级优先级a-b+ca-b+c373 3.算术表达式算术表达式:算术运算符算术运算符和和括号括号将将运算对象运算对象连接起来的、符合连接起来的、符合C C语法规则语法规则的式子的式子 常量、变量、函常量、变量、函数等数等 2+sqrt(c)2+sqrt(c)*

34、b b求值规律:求值规律:1)1)括号可以嵌套多层,但左右括号必须配对。由内向外计算。括号可以嵌套多层,但左右括号必须配对。由内向外计算。2)2)不同级别的运算符,按不同级别的运算符,按优先级由高到低优先级由高到低运算运算 同一级别运算符,按同一级别运算符,按结合性结合性运算运算 3)3)若一个运算符两侧数据类型不同,则先进行类型转换,然后若一个运算符两侧数据类型不同,则先进行类型转换,然后计算。计算。如:如:2 2 *3%5/43%5/4a a*b/c-1.5 (a,b,c b/c-1.5 (a,b,c为变量为变量)int i=10;float f=12.0,e=10.0;double d=

35、12.0;10 +i *f -d /e38double floatlongunsignedint char,short高高 低低为必定的转换为必定的转换当运算符两侧的运算对象当运算符两侧的运算对象的数据类型不一致时的转换方向。的数据类型不一致时的转换方向。注:注:102.400103110.4004.4.基本类型数据间的混合运算基本类型数据间的混合运算5 +b -x/2 +y*m int m=2,float x=1.2,double y=4.00.600-+y*m+y*m8.0001)1)自动类型转换自动类型转换39功能:将功能:将表达式的值表达式的值转换为指定类型。转换为指定类型。如:如:(

36、double)(double)a a (把把a a转换为转换为doubledouble类型类型)(int (int)(x+y)()(x+y)(把把x+yx+y的值的值转换为整型转换为整型,)(float)(5%3)(float)(5%3)(把把5%35%3的值的值转换为转换为floatfloat型型)注:注:1.1.整型数转换为实型时,补足有效位数;整型数转换为实型时,补足有效位数;实型数转换为整型时,只取其整数部分。实型数转换为整型时,只取其整数部分。2.(int)x+y (2.(int)x+y (把把x x转换为整型,然后与转换为整型,然后与y y相加相加)3.3.强制类型转换或自动类型转

37、换,只是得到强制类型转换或自动类型转换,只是得到了一个所需了一个所需类型的类型的中间变量,原变量或表达式的值和类型并不变。中间变量,原变量或表达式的值和类型并不变。4.4.强制类型转换的优先级高于自动类型转换。强制类型转换的优先级高于自动类型转换。强制类型转换强制类型转换运算符运算符2 2)强制类型转换强制类型转换 格式:格式:(类型名类型名)(表达式表达式)40#include stdio.hmain()int i=1,j=5,k1,k2,k3;float x=5.7,y=2.8,z1,z2,z3;k1=(int)x;k2=(int)(x)/y;k3=(int)(x/y);z1=(float

38、)i;z2=(float)i/j;z3=(float)(i/j);printf(k1=%dn,k1);printf(k2=%dn,k2);printf(k3=%dn,k3);printf(z1=%fn,z1);printf(z2=%fn,z2);printf(z3=%fn,z3);【例【例2.62.6】强制类型转换示例】强制类型转换示例411.1.基本赋值运算符:基本赋值运算符:=如:如:a=10a=10 复合赋值运算符:复合赋值运算符:+=+=,-=-=,*=,/=/=等等二、赋值运算符和赋值表达式二、赋值运算符和赋值表达式 格式:格式:变量变量 赋值运算符赋值运算符 表达式表达式 作用:把

39、表达式的值赋给一个变量。作用:把表达式的值赋给一个变量。a=3a=3a=a+1a=a+1a+=5a+=5 a=b=c=1 a=b=c=1 (结合性:(结合性:自右向左自右向左)2.2.赋值表达式赋值表达式:由赋值运算符组成的表达式:由赋值运算符组成的表达式 a a 1010(1)1)赋值运算符可以是基本的、复合的赋值运算符。赋值运算符可以是基本的、复合的赋值运算符。赋值运算符的优先级赋值运算符的优先级只高于逗号运算符。只高于逗号运算符。表达式也可以是一个赋值表达式。表达式也可以是一个赋值表达式。42 赋值表达式的值与类型赋值表达式的值与类型=赋值运算符左边变量的值与类型赋值运算符左边变量的值与

40、类型 例例1 1:intint a,b,c a,b,c;a=5a=5;a=(b=5)a=(b=5);a=(b=5)+(c=3);a=(b=5)+(c=3);(3)3)在程序中可给一个变量多次赋值,最后赋的值为其当前数据。在程序中可给一个变量多次赋值,最后赋的值为其当前数据。(2)2)赋值运算符左侧必须是变量赋值运算符左侧必须是变量,不能是常量或表达式。不能是常量或表达式。(4)赋值过程:赋值过程:求求出表达式的出表达式的值值,比较表达式值的类型与变量的类型,比较表达式值的类型与变量的类型,类型相同时:直接类型相同时:直接赋值赋值 类型不同时:先自动类型转换再赋值。类型不同时:先自动类型转换再赋

41、值。43 如:如:float f;float f;f=23;f=23;则则f=23.000000f=23.000000 如:如:double f;double f;f=23;f=23;则则f=23.00000000000000f=23.00000000000000 b b、整型、整型 实型实型 :舍弃小数部分:舍弃小数部分如:如:intint i;i=12.5 i;i=12.5 则则 i=12i=12(5 5)赋值运算中的类型转换)赋值运算中的类型转换 原则:赋值前,自动把右侧表达式值按左边变量类型转换原则:赋值前,自动把右侧表达式值按左边变量类型转换 a a、实型、实型 整型:数值不变整型:

42、数值不变 ,但以浮点数形式存储到变量中,但以浮点数形式存储到变量中440000 0000 0000 00001111 1111 1111 10001111 1111 1111 1111低位字节照写,高位字节扩展:低位字节照写,高位字节扩展:被转换为有符号型被转换为有符号型(左边左边)时:符号位扩展时:符号位扩展 被转换为无符号类型时:被转换为无符号类型时:0 0扩展扩展 0000 0000 0000 10000000 0000 0000 00000000 0000 0000 10001111 1111 1111 10000000 0000 0000 0000short int a=8;int

43、b;b=a;符号位符号位符号位符号位符号位符号位short int a=-8;long int b;b=a;符号位符号位 unsigned longunsigned longc c、(1)(1)较长的整型变量较长的整型变量 较短的整数较短的整数450000 0000 0000 10000000 0000 0000 10000000 0000 0000 0000(2)(2)较短型整数较短型整数 较长型整数:只截取低位字节位。较长型整数:只截取低位字节位。Short int a;long int b=8;a=b;符号位符号位符号位符号位46d.d.长整型变量长整型变量 无符号的整数无符号的整数:低

44、位赋值,不足的低位赋值,不足的高位补高位补0 0 1111 1111 1111 11111111 1111 1111 1111-1unsigned short int a=65535;short int b;b=a;同长整型变量同长整型变量 无符号的整数无符号的整数:若数据超出范围,则出错若数据超出范围,则出错 0000 0000 0000 10000000 0000 0000 00000000 0000 0000 1000符号位符号位unsigned short int a=8;long int b;b=a;数值位数值位数值位数值位符号位符号位47e.e.同长无符号整型变量同长无符号整型变量

45、 带符号的整数带符号的整数:(符号作为数据传入)(符号作为数据传入)例例2.7#include stdio.hmain()unsigned short int i;short int j=-6;i=j;printf(%un,i);1111 1111 1111 10101111 1111 1111 1010结果结果:65530ij补码补码 数值位数值位符号位符号位思考:思考:如果如果j为为6,则运行,则运行结果是什么?结果是什么?483.3.复合赋值运算符复合赋值运算符任何双目运任何双目运算符算符若若i=2,j=12,k=10 i=2,j=12,k=10 则则 k+=j+=i+8k+=j+=i+

46、8的值是?的值是?=k=k+(j=j+(i+8)k=k+(j=j+(i+8)值是值是 3232 在赋值符在赋值符“”之前加上之前加上其它运算符其它运算符,构成复合运算符。,构成复合运算符。注:其它运算符放在注:其它运算符放在“”之前之前 如:如:a+=3 a+=3 等价于等价于 a=a+3a=a+3 x x*=y+8 =y+8 等价于等价于 x=xx=x*(y+8)(y+8)x%=3 x%=3 等价于等价于 x=x%3x=x%349三、自增三、自增(+)(+)、自减、自减(-)(-)运算符运算符 如:如:intint i=3,x i=3,x;x=+i;x=+i;x=i+x=i+;和使运算对象的

47、值增和使运算对象的值增1 1或减或减1 1。运算对象可为实型变量、整型变量。运算对象可为实型变量、整型变量。不能不能是常量或表达式是常量或表达式 如:如:3 3,(i+ji+j)-都不合法。都不合法。是单目运算符。是单目运算符。+i,-i+i,-i,i+,ii+,i-都是合法的表达式。都是合法的表达式。结合方向为:结合方向为:“自右向左自右向左”。如:。如:-i+-i+相当于相当于-(i+)-(i+)+i,-i+i,-i:前置运算符:前置运算符(i(i值先增值先增/减减1 1,后使用,后使用i)i)i+,i-i+,i-:后置运算符:后置运算符(先使用先使用i i的值,后使的值,后使i i值增值

48、增/减减1)1)相同点:相同点:变量都具有自增变量都具有自增1 1或自减或自减1 1的效果的效果 不同点不同点:表达式却会有不同的值:表达式却会有不同的值=i=i+1i=i+14;x=i4;x=i4;4;=x=i=3;i=i+1=4;x=i=3;i=i+1=4;50最好不要在一个表达式中对同一个变量进行多次或操作最好不要在一个表达式中对同一个变量进行多次或操作【例【例2.82.8】自增、自减运算符使用示例:】自增、自减运算符使用示例:#include stdio.hmain()int i=5,j,k;j=+i;i=5;k=i+;printf(i=%d,j=%d,k=%dn,i,j,k);pri

49、ntf(j=%d,k=%dn,+j,k+);51逗号运算符:逗号运算符:“,”优先级优先级:最低最低 结合性:从左到右结合性:从左到右逗号表达式:用逗号将表达式连接起来的式子逗号表达式:用逗号将表达式连接起来的式子 格式:格式:表达式表达式1 1,表达式表达式2 2,表达式表达式N N逗号表达式的值:逗号表达式的值:从左到右,依次求出各表达式的值,从左到右,依次求出各表达式的值,表达表达式式N N 的值和类型为逗号表达式的值和类型。的值和类型为逗号表达式的值和类型。如:如:x=(a=3,b=5,c=bx=(a=3,b=5,c=b*4)4)t=3,t+2 t=3,t+2 (a=2 (a=2*3,

50、a3,a*5),a+65),a+6四、逗号运算符和逗号表达式四、逗号运算符和逗号表达式52五、五、sizeofsizeof运算符运算符sizeofsizeof运算符是一个单目运算符运算符是一个单目运算符,它返回变量或数据类型它返回变量或数据类型的字节长度。的字节长度。一般形式为:一般形式为:sizeofsizeof(类型标识符类型标识符)或或 sizeofsizeof(变量名变量名)例如:例如:sizeof(doublesizeof(double)sizeof(int sizeof(int)设有下列程序段设有下列程序段:float f;float f;int i;int i;i=sizeof(

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

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

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


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

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


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