第2章C语言基础_第1页
第2章C语言基础_第2页
第2章C语言基础_第3页
第2章C语言基础_第4页
第2章C语言基础_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、、函数名、文件名以及一些具有专门含义的有效字符序列。名以及一些具有专门含义的有效字符序列。以字母或下划线以字母或下划线(_)(_)开头,由字母、数字、下划线组成的开头,由字母、数字、下划线组成的字符序列。字符序列。 如:如:num,a8,no_1 3d,no 1,xk#1(不合法不合法) 大写字母和小写字母大写字母和小写字母视为两个不同的字符。视为两个不同的字符。 不同的不同的C C语言编译器规定的标识符的长度可能会不同,语言编译器规定的标识符的长度可能会不同,一般规定一般规定取前面取前面8 8个字符个字符,多余的不被识别。例如:,多余的不被识别。例如:student_name和和studen

4、t_num被认为是相同的标识符被认为是相同的标识符student_。2、标识符标识符:5/48关键字标识符:关键字标识符:预定义标识符:预定义标识符:用户标识符:用户标识符:代表固定含义,不能另作它用。代表固定含义,不能另作它用。代表特定含义(一般是库函数名和预编代表特定含义(一般是库函数名和预编译处理命令名),一般不另作它用。译处理命令名),一般不另作它用。标识符分类标识符分类定义用户标识符时注意:定义用户标识符时注意: 大小写有区分。大小写有区分。 如如book,BOOK, Book。 标识符做到标识符做到“见名知意见名知意”。如。如average, sum, length等。等。 关键字

5、关键字不能作为标识符。如不能作为标识符。如do , int, if 等。等。6/483 3、常量:、常量:在程序运行过程中,其值在程序运行过程中,其值不能被改变不能被改变的量称为常量。的量称为常量。 符号常量:符号常量: #define 符号常量名符号常量名 常量常量 #define PI 3.1415926常量类型:常量类型:直接常量:直接常量:123,3.14159267/48#include stdio.h#include stdio.h main( ) main( ) float radius; float radius; / /* * radius radius圆的半径圆的半径 *

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

7、* */ / length = 2 length = 2* * 3.14159263.1415926 * *radius; radius; / /* * 计算圆的周长计算圆的周长* */ / printf printf (“area=%f (“area=%f,length=%f,area,lengthlength=%f,area,length); ); #define PI 3.1415926#define PI 3.1415926PI PI PI PI 【例】计算圆的面积和周长。【例】计算圆的面积和周长。8/48 程序执行过程中,其值可以被改变的量。程序执行过程中,其值可以被改变的量。 (1

8、)(1)变量名:变量名:既代表某存储空间,又代表该空间存储的数据。既代表某存储空间,又代表该空间存储的数据。(3)(3)变量的数据类型变量的数据类型( (内存中占据内存空间的大小和变量的取内存中占据内存空间的大小和变量的取值范围值范围) )C C要求要求: :变量必须变量必须先声明后使用先声明后使用,指明其数据类型,指明其数据类型 变量定义格式:变量定义格式: 数据类型标识符数据类型标识符 变量名表变量名表 如:如: intint a , b , c; float d; a , b , c; float d; (4)(4)变量的地址:即变量所占内存空间的变量的地址:即变量所占内存空间的首字节首

9、字节的编号。的编号。4 4、变量:、变量:a a 6 6(2)(2)变量的值:存放在存储单元中的数据(存储单元内容)。变量的值:存放在存储单元中的数据(存储单元内容)。 9/48#include stdio.h main( ) int num; float price,total; num=5; price=3; total=price*num; printf(total=%d,total); 【例】用【例】用priceprice代表商品单价、代表商品单价、numnum代表商品数量,然后计代表商品数量,然后计算商品的总价算商品的总价totaltotal。10/481.1.整型数据类型标识符整型

10、数据类型标识符整型数据有基本型、短整型、长整型和无符号型四种。整型数据有基本型、短整型、长整型和无符号型四种。基本整型(简称整型):类型标识符为基本整型(简称整型):类型标识符为intint。短整型:类型标识符为短整型:类型标识符为short intshort int或或shortshort。长整型:类型标识符为长整型:类型标识符为1ong int1ong int或或1ong1ong。无符号型:表示不带符号的整数。又可分为以下三种:无符号型:表示不带符号的整数。又可分为以下三种:u无符号整型:类型标识符为无符号整型:类型标识符为unsigned intunsigned int。u无符号短整型:

11、类型标识符为无符号短整型:类型标识符为unsigned shortunsigned shortu无符号长整型,类型标识符为无符号长整型,类型标识符为usignedusigned 1ong 1ong。一一整型数据整型数据 2.3 2.3 基本类型数据基本类型数据11/482.3.1 基本数据类型(一)基本数据类型(一) 1. 整型数据 整型数据分为一般整型(int)、短整型(short)和长整型(long),并且每一种类型又分为带符号(signed)和无符号(unsigned)两种类型 。整型数据的特性见下表: 04294967295数据类型名说明Visual C+ 6.0环境Turbo C2.

12、0环境字节取值范围字节取值范围 short int短整型2-32768327672-3276832767 signed short int带符号短整型2-32768327672-3276832767 unsigned short int 无符号短整型20655352065535 int整型4-214748364821474836472-3276832767 signed int带符号整型4-214748364821474836472-3276832767 unsigned int无符号整型42065535 long int长整型4-214748364821474836474-214748364

13、82147483647 signed long int带符号长整型4-214748364821474836474-21474836482147483647 unsigned long int无符号长整型40429496729540429496729512/48整数在内存中的存储方式:整数在内存中的存储方式:补码补码0000 0000 0000 0000 0000 0000 0000 11000000 0000 0000 11000000 0000 0000 11000000 0000 0000 0000 0000 0000 0000 11000000 0000 0000 0000 0000 0

14、000 0000 1100int 型型short 型型long 型型unsigned int 型型unsigned short 型型unsigned long 型型图图2.2 2.2 整型数据整型数据1212的存储情况的存储情况符符号号位位0000 0000 0000 0000 0000 0000 0000 110013/48例如:例如:intint k; k; long long p, l; p, l; unsigned shortunsigned short n, m; n, m;任何一种数据类型都有常量和变量之分任何一种数据类型都有常量和变量之分2 2、整型变量的定义、整型变量的定义变量

15、定义后,只是在内变量定义后,只是在内存中申请了相应的空间存中申请了相应的空间,此时存储空间中并没,此时存储空间中并没有有意义的数据,即变有有意义的数据,即变量没有确定的值。量没有确定的值。14/48C C语言中整型常量可以用语言中整型常量可以用3 3种形式表示:种形式表示: 十进制数,如十进制数,如+123+123,-234-234,0 0,2323; 八进制数,如八进制数,如 0 0234234,0 0777777; 十六进制数,如十六进制数,如0 0 x234x234,0 x9A0 x9A。整型数又分为基本整型、短整型、长整型整型数又分为基本整型、短整型、长整型( (后加后加l l或或L)

16、L) 和无符和无符号整型数号整型数( (后加后加u u或或U)U) 。 前缀、后缀可同时使用以表示不同类型不同进制的整型数。前缀、后缀可同时使用以表示不同类型不同进制的整型数。 如如0 034563456LULU表示八进制无符号长整型数。表示八进制无符号长整型数。 3 3、整型常量、整型常量15/48二二. . 实型数据实型数据1. 1. 实型数据类型标识符实型数据类型标识符 实型数据有单精度型和双精度型两种。实型数据有单精度型和双精度型两种。单精度型单精度型:类型标识符为:类型标识符为floatfloat。双精度型双精度型:类型标识符为:类型标识符为doubledouble。类型类型 占用字

17、节数占用字节数 有效数字有效数字 数值范围数值范围 float float 4 4 7 7 1010-37-37-10-103838 double double 8 8 12-16 12-16 1010-307-307-10-10308308 16/482. 2. 实型变量的定义实型变量的定义float f,f1=2.5; / /* * 定义定义f、f1为单精度实型变量为单精度实型变量 * */ /double d; / /* * 定义定义d为双精度实型变量为双精度实型变量 * */ /17/483. 实型常量实型常量( (又称实数,只有十进制形式又称实数,只有十进制形式) )小数形式小数形式

18、指数形式指数形式由数字和小数点组成由数字和小数点组成( (必有小数点,但其前后必有小数点,但其前后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在程序中,

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

20、放一个字符一个字符 如:如:x=a;x=a;将字符将字符 a a 赋值给字符变量赋值给字符变量 x x 实际上是实际上是把把 a a的的ASCII ASCII 代码值代码值 97 97 放到放到 x x 对应的内存单元中去对应的内存单元中去 字符变量字符变量= =字符常量字符常量/ /字符变量字符变量/0-255/0-255的整数的整数2 2字符型变量的定义字符型变量的定义20/48 如如: 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=

21、a-32;= i=a;= printf(“%c,%d n”, i,i);注意:注意:* * *在内存中,字符数据和整型数据的存储形式相似,所以在在内存中,字符数据和整型数据的存储形式相似,所以在c c语言中二者可以通用。语言中二者可以通用。97659721/483. 3. 字符型常量字符型常量 字符常量字符常量: : 用单引号括起来的用单引号括起来的字符字符。 代表代表ASCIIASCII字符集中的一个字符字符集中的一个字符 两种表示形式:两种表示形式: 由单引号括起来的由单引号括起来的普通字符常量普通字符常量;如;如AA,a,3 , a,3 , 由单引号括起来的由单引号括起来的转义字符转义字

22、符;如;如nn,tt 22/48 单引号中的大小写字母代表不同的字符常量。如:单引号中的大小写字母代表不同的字符常量。如:aa、AA a a和和a a的区别的区别 是一个字符常量,有一空格,和是一个字符常量,有一空格,和的区别。的区别。 单引号中只能包含一个字符单引号中只能包含一个字符 只能用只能用表示字符常量,表示字符常量,“”“”表示的是字符串常量表示的是字符串常量 C C语言规定语言规定: : 字符型常量在内存中占字符型常量在内存中占8 8位(一个字节)。位(一个字节)。 字符常量在内存中实际存储的是其字符常量在内存中实际存储的是其ASCIIASCII码的值码的值 如:如: AA a a

23、 3 3 一、普通字符常量一、普通字符常量656597975151 字符常量和整型常量是可以混用的。字符常量和整型常量是可以混用的。23/48 以一个以一个反斜线反斜线开头后跟一个特定的字符,代表某一开头后跟一个特定的字符,代表某一特定的特定的ASCIIASCII字符。字符。 又称反斜线字符。如:又称反斜线字符。如:n,n, 后可跟后可跟8 8进制或进制或1616进制数,表示一个进制数,表示一个ASCIIASCII字符字符 如:如:AA也可用也可用101101或或 x41x41表示表示(后不允许用后不允许用X X,0 x)0 x)二、转义字符常量二、转义字符常量24/48#include st

24、dio.hmain( ) printf(nt101); printf(ntbbbb); printf(*hello*); printf(ntx41); 输出结果:输出结果: A A * *hellohello* * A A 【例】使用转义字符控制输出。【例】使用转义字符控制输出。25/484 4字符型数据在内存中的存储形式字符型数据在内存中的存储形式c2c10100000100001010图图2.4 2.4 字符型数据的存储字符型数据的存储char c1,c2;c1=A;c2=n 651026/48【例【例2.32.3】字符型数据的输出。】字符型数据的输出。#include stdio.hma

25、in( ) char c1;c1=65;printf(%c,%dn,c1,c1);输出结果:输出结果:A,65 A,65 27/48可对字符数据进行的运算可对字符数据进行的运算 字符型数据可参与任何整数运算字符型数据可参与任何整数运算 如:如:算术运算算术运算 B- A等价于等价于66-65等价于等价于1 a+1等价于等价于971等价于等价于98等价于等价于b 大小写字母的相互转换大小写字母的相互转换: A+32等价于等价于6532等价于等价于97等价于等价于a b-32等价于等价于98-32等价于等价于66等价于等价于B 数字字符与相应整数值的相互转换数字字符与相应整数值的相互转换: 9-

26、0 等价于等价于5748 等价于等价于 9 90 等价于等价于948 等价于等价于 928/48【例【例】#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=Bc1=a,c2=B 29/48四四. .字符串常量字符串常量 用一对用一对双引号双引号括起来的一串字符;如括起来的一串字符;如“hello”, “%d%d”hello”, “%d%d” C C规定:在一个字符串的末尾加一个串结束标志规定:在一个字符串的末尾加一个串

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

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

29、进行赋值。变量赋初值是指在定义变量的同时对变量进行赋值。 例如:例如: intint a=5; a=5; int a,b,c int a,b,c=10; =10; 五五. . 变量赋初值变量赋初值 如果对几个变量赋以同一个初值,不能写成:如果对几个变量赋以同一个初值,不能写成: intint a=b=c=8 a=b=c=8;而应写成:而应写成: intint a=8 a=8,b=8b=8,c=8c=8;int a,b,cint a,b,c; ;a=b=c=8;a=b=c=8;32/48 运算符运算符:算术运算符、关系运算符、赋值运算符、逗号运算符等算术运算符、关系运算符、赋值运算符、逗号运算符

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

31、z33/48一、算术运算符和算术表达式一、算术运算符和算术表达式1.1.算术运算符及优先级和结合性算术运算符及优先级和结合性 双目双目: + (+ (加法运算符加法运算符) ) - - ( (减法运算符减法运算符) ) * * ( (乘法运算符乘法运算符) ) / / ( (除法运算符除法运算符) ) % ( % (模运算符模运算符 或或 求余运算符求余运算符) ) 说明:说明:1.1.除除/ /,双目运算对象可以是整型、实型。运算对象只,双目运算对象可以是整型、实型。运算对象只能是整型。能是整型。2.2.操作数类型一致时运算结果与操作数类型一致。操作数类型一致时运算结果与操作数类型一致。3.

32、3.不一致时不能直接运算,数据类型自动转换不一致时不能直接运算,数据类型自动转换34/48整除:整整除:整/ /整整(舍去所有小数部分整整(舍去所有小数部分四舍五入)四舍五入) 8/3=28/3=2实除:两实数或与一实数相除双精度型。实除:两实数或与一实数相除双精度型。 如如:8/3.0=2.6666666:8/3.0=2.66666668.0/3=2.66666668.0/3=2.66666668.0/3.0=2.66666668.0/3.0=2.6666666整型整型 % %整型整型整型整型 如:如: 8%3=2 8%3=2 -19%4=-3 -19%4=-3(运算量为负数时,在(运算量为

33、负数时,在TCTC中结果的中结果的符号与被除数相同)符号与被除数相同)/ (/ (除法运算符除法运算符) )% (% (模运算符模运算符 或或 求余运算符求余运算符) )35/48单目:单目: + (+ (正值运算符正值运算符) +3) +3 - ( - (负值运算符负值运算符) -3 , -2.0) -3 , -2.0注:注:1.1.运算符必须出现在运算对象的左边。运算符必须出现在运算对象的左边。 2.2.运算对象可以是整型、实型。运算对象可以是整型、实型。2. 2. 算术运算符和圆括号的优先级:算术运算符和圆括号的优先级: ( ) + - ( ) + - * * / % + - / % +

34、 -单目单目双目双目同级同级同级同级同级同级结合性:结合性:高高低低双目:从左到右双目:从左到右单目:从右到左单目:从右到左优先级优先级a-b+ca-b+c36/483 3. . 算术表达式算术表达式: : 算术运算符算术运算符和和括号括号将将运算对象运算对象连接起来的、符合连接起来的、符合C C语法规则语法规则的式子的式子 常量、变量、函常量、变量、函数等数等 2+sqrt(c)2+sqrt(c)* *b b求值规律:求值规律: 1)1)括号可以嵌套多层,但左右括号必须配对。由内向外计算。括号可以嵌套多层,但左右括号必须配对。由内向外计算。 2)2)不同级别的运算符,按不同级别的运算符,按优

35、先级由高到低优先级由高到低运算运算 同一级别运算符,按同一级别运算符,按结合性结合性运算运算 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=12.0; 10 + i * f - d / e37/48double floatlongunsignedint char, s

36、hort高高 低低为必定的转换为必定的转换当运算符两侧的运算对象当运算符两侧的运算对象的数据类型不一致时的转换方向。的数据类型不一致时的转换方向。 注:注: 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) 自动类型转换自动类型转换38/48功能:将功能:将表达式的值表达式的值转换为指定类型。转换为指定类型。 如:如:(double) (double) a a ( (把把a a转

37、换为转换为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. 表达式为变量时不加

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

39、3;k1=(int)x;k2=(int)(x)/y; k3=(int)(x/y);z1=(float)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】强制类型转换示例】强制类型转换示例40/481.1. 基本赋值运算符:基本赋值运算符:= = 如:如:a=10a=10 复合赋值运算符:复合赋值运算符:+=+=,-=-=,* *= =,/=/=

40、等等二、赋值运算符和赋值表达式二、赋值运算符和赋值表达式 格式:格式: 变量变量 赋值运算符赋值运算符 表达式表达式 作用:把表达式的值赋给一个变量。作用:把表达式的值赋给一个变量。a = 3a = 3a = a + 1a = a + 1a + = 5a + = 5 a = b = c = 1 a = b = c = 1 (结合性:(结合性:自右向左自右向左)2. 2. 赋值表达式赋值表达式:由赋值运算符组成的表达式:由赋值运算符组成的表达式 a a 1010(1)1)赋值运算符可以是基本的、复合的赋值运算符。赋值运算符可以是基本的、复合的赋值运算符。 赋值运算符的优先级赋值运算符的优先级只高

41、于逗号运算符。只高于逗号运算符。 表达式也可以是一个赋值表达式。表达式也可以是一个赋值表达式。41/48 赋值表达式的值与类型赋值表达式的值与类型= =赋值运算符左边变量的值与类型赋值运算符左边变量的值与类型 例例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)赋值运算符左侧必须是变量赋值运算符左侧必须是变量, ,不能是常量或表达式。不能是常量或表达式。

42、 (4) 赋值过程:赋值过程: 求求出表达式的出表达式的值值,比较表达式值的类型与变量的类型,比较表达式值的类型与变量的类型, 类型相同时:直接类型相同时:直接赋值赋值 类型不同时:先自动类型转换再赋值。类型不同时:先自动类型转换再赋值。42/48 如:如: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

43、 i ; i=12.5 i ; i=12.5 则则 i=12i=12(5 5)赋值运算中的类型转换)赋值运算中的类型转换 原则:赋值前,自动把右侧表达式值按左边变量类型转换原则:赋值前,自动把右侧表达式值按左边变量类型转换 a a、实型、实型 整型:数值不变整型:数值不变 ,但以浮点数形式存储到变量中,但以浮点数形式存储到变量中43/483.3.复合赋值运算符复合赋值运算符任何双目运任何双目运算符算符若若i=2,j=12,k=10 i=2,j=12,k=10 则则 k+=j+=i+8k+=j+=i+8的值是?的值是?=k=k+(j=j+(i+8) k=k+(j=j+(i+8) 值是值是 323

44、2 在赋值符在赋值符“”之前加上之前加上其它运算符其它运算符,构成复合运算符。,构成复合运算符。 注:其它运算符放在注:其它运算符放在“”之前之前 如:如: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%344/48三、自增三、自增(+)(+)、自减、自减(-)(-)运算符运算符 如:如:intint i=3 , x i=3 , x ; x=+i;x=+i; x=i+ x=i+;和使运算对象的值增和使运算对象的值增1 1或减或减1 1。运算对象可为实型变量、整型变量。运算对象可为实型变量、整型变量。不能不能是常量或表达式是常量或表达式 如:如:3 3, (i+ji+j)- - -都不合法。都不合法。是单目运算符。是单目运算符。 +i,-i +i,-i ,i+,ii+,i- - 都是合法的表达式。都是合法的表达式。 结合方向为:结合方向为:“自右向左自右向左”。如:。如:-i+-i+相当于相当于-(i+)-(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论