c语言第2章c语言基础.ppt

上传人:wuy****n92 文档编号:70101041 上传时间:2023-01-16 格式:PPT 页数:61 大小:552.50KB
返回 下载 相关 举报
c语言第2章c语言基础.ppt_第1页
第1页 / 共61页
c语言第2章c语言基础.ppt_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《c语言第2章c语言基础.ppt》由会员分享,可在线阅读,更多相关《c语言第2章c语言基础.ppt(61页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第2章 C语言基础 1本章要求:本章要求:理解变量与常量的概念、掌握变量的定义和使用;理解变量与常量的概念、掌握变量的定义和使用;掌握常用数据类型的数据在内存中的存放形式;掌握常用数据类型的数据在内存中的存放形式;掌掌握握算算术术运运算算符符、关关系系运运算算符符、逻逻辑辑运运算算符符、赋赋值值运运算算、逗号运算规则及优先级别;逗号运算规则及优先级别;掌握各种表达式的运算及简单的运用;掌握各种表达式的运算及简单的运用;本章难点:本章难点:各种数据类型的数据在内存中的存放形式各种数据类型的数据在内存中的存放形式本章重点:本章重点:变量与常量的概念、各种表达式的运算变量与常量的概念、各种表达式的运

2、算第第2章章C语言基础语言基础第2章 C语言基础 2第第2章章基本的程序基本的程序语句句一、一、语言的数据类型语言的数据类型二、二、常量常量三、三、变量变量四、四、运算符与表达式运算符与表达式五、五、数据类型转换数据类型转换 第2章 C语言基础 31 1、语言数据类型概述语言数据类型概述 一、一、语言的数据言的数据类型型数据的组织形式是数据结构,数据结构的表现形式是数据的组织形式是数据结构,数据结构的表现形式是数据类型数据类型,在程序中表现数据必须指定其数据类型。,在程序中表现数据必须指定其数据类型。数据类型决定数据在内存的空间大小,数据的表示形数据类型决定数据在内存的空间大小,数据的表示形式

3、,数据的取值范围以及可参与运算的种类。式,数据的取值范围以及可参与运算的种类。C语言的数据类型丰富,可以表示复杂的数据结构。语言的数据类型丰富,可以表示复杂的数据结构。第2章 C语言基础 4数据类型数据类型基本类型基本类型整型整型实型实型(浮点型浮点型)字符型字符型枚举类型枚举类型单精度单精度双精度双精度构造类型构造类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型指针类型指针类型空类型空类型一、一、语言的数据言的数据类型型(int)(char)(float)(double)(void)第2章 C语言基础 5C语言中的数据有语言中的数据有常量常量和和变量变量之分。之分。常量常量是在程

4、序运行过程中,其值不能被改变的量。是在程序运行过程中,其值不能被改变的量。变量变量是在程序运行过程中,其值可以被改变的。是在程序运行过程中,其值可以被改变的。常量和变量是数据的外在存储形式,数据最终以这两种方常量和变量是数据的外在存储形式,数据最终以这两种方常量和变量是数据的外在存储形式,数据最终以这两种方常量和变量是数据的外在存储形式,数据最终以这两种方式之一出现,但它们都要归属于某种数据类型。式之一出现,但它们都要归属于某种数据类型。式之一出现,但它们都要归属于某种数据类型。式之一出现,但它们都要归属于某种数据类型。变量是在程序中定义的,代表变量是在程序中定义的,代表某个存储空间及其某个存

5、储空间及其所存储的数据。所存储的数据。一、一、语言的数据言的数据类型型第2章 C语言基础 62 2、基本数据类型基本数据类型 基本数据类型是构成基本数据类型是构成C语言的数据类型的最基本要素语言的数据类型的最基本要素包括:包括:整型整型(intint)实型实型(float float 和和 double double)字符型字符型(charchar)例如:整型数据的取值和取值范围例如:整型数据的取值和取值范围类型说明符类型说明符数的范围数的范围分配字节数分配字节数int-32768327672字节字节shortint/short-32768327672字节字节long-214748364821

6、474836474字节字节unsignedint/unsigned0655352字节字节unsignedshortint0655352字节字节unsignedlongint042949672954字节字节注意:注意:注意:注意:VisualC+6.0VisualC+6.0中,基本整型与长整型所占字节中,基本整型与长整型所占字节中,基本整型与长整型所占字节中,基本整型与长整型所占字节数及表示范围对应相同。数及表示范围对应相同。数及表示范围对应相同。数及表示范围对应相同。一、一、语言的数据言的数据类型型第2章 C语言基础 7二、二、常量常量(一)数值常量(一)数值常量 1.1.整型常量整型常量在语

7、言中,使用的整常数有在语言中,使用的整常数有八进制八进制、十六进制十六进制和和十进制十进制三种。三种。(1 1).十进制整常数。十进制整常数。237-56801627 (2 2).八进制整常数八进制整常数八进制整常数必须以八进制整常数必须以0开头,即以开头,即以0作为八进制数的前缀。作为八进制数的前缀。015(十进制为十进制为13)0101(十进制为十进制为65)079和和08001不合法的八进制数不合法的八进制数定义定义:在程序运行时,其值不能被改变的量叫常量。在程序运行时,其值不能被改变的量叫常量。如如 5,3.14159,a 5,3.14159,a 等等第2章 C语言基础 8二、二、常量

8、常量(3 3).十六进制整数的前缀为十六进制整数的前缀为0X0X。0X0X2A(2A(十进制为十进制为42)42)0X0XA0(A0(十进制为十进制为160)160)0X0XFFFF(FFFF(十进制为十进制为65535)65535)以下各数是以下各数是不合法不合法的十六进制整常数:的十六进制整常数:5A 0X3H 5A 0X3H若要表示长整型(若要表示长整型(long)整数,整数,在数的最后加表示长整型在数的最后加表示长整型的后缀修饰符号字母的后缀修饰符号字母“l”“l”。如:如:1250125l0X0X125l等价于等价于125、(125)8、(125)16思考:思考:2525和和25l2

9、5l的区别?的区别?说明:说明:前前者者用用2字字节节存存储储,后后者者则则使使用用4个个字节存储。字节存储。第2章 C语言基础 9(二)(二)实型常量实型常量实实型型也也称称为为浮浮点点型型。实实型型常常量量也也称称为为实实数数或或者者浮浮点点数数。在在语言中,实数只采用十进制。语言中,实数只采用十进制。它有两种形式:它有两种形式:小数形式小数形式与与指数形式指数形式(1 1).小数形式小数形式 由数码由数码0-90-9和小数点组成。和小数点组成。例如:例如:0.123 .123 123.0 -1230.123 .123 123.0 -123等均为合法的实数。等均为合法的实数。(2 2).指

10、数形式指数形式 由十进制数,加阶码标志由十进制数,加阶码标志“e”“e”或或“E”“E”以及阶码组成。以及阶码组成。其一般形式为其一般形式为a E n a E n 值为值为 a*10a*10nn二、二、常量常量第2章 C语言基础 10二、二、常量常量例如:例如:1.25E+31.25e+31.251031250.0说明说明:当幂为正数时,正号可以省略。即当幂为正数时,正号可以省略。即1.25E+3等价于等价于1.25E3;同同一一个个实实数数可可以以有有多多种种表表示示形形式式,例例如如:1250.0可可以以用用0.0125E+5,0.125E+4,1.25E+3,12.5E+2,125E+1

11、。字母字母e(或或E)之前必须有数字,且之前必须有数字,且e后面指数必须为整数。后面指数必须为整数。aEn第2章 C语言基础 11二、常量二、常量(三)字符常量(三)字符常量字字 符符 常常 量量 是是 用用 单单 引引 号号 括括 起起 来来 的的 一一 个个 字字 符符。例例 如如a,b,=,+,?都是合法字符常量。都是合法字符常量。在语言中,字符常量有以下特点:在语言中,字符常量有以下特点:1.字字符符常常量量只只能能用用单单引引号号括括起起来来,不不能能用用双双引引号号或或其其它它括号;括号;2.字符常量只能是单个字符,不能是字符串字符常量只能是单个字符,不能是字符串;3.字字符符可可

12、以以是是字字符符集集中中任任意意字字符符。但但数数字字被被定定义义为为字字符符型之后就不能参与数值运算。型之后就不能参与数值运算。如如5和和5是不同的。是不同的。第2章 C语言基础 12二、二、常量常量(四)字符串常量(四)字符串常量C语言中的字符串常量是由一对语言中的字符串常量是由一对双引号双引号括起来的字符序列。括起来的字符序列。每个字符串最后有一结束标志每个字符串最后有一结束标志0。例如:例如:ABC,A,123lkdf字符串常量在内存中存储时,系统自动在字符串的末字符串常量在内存中存储时,系统自动在字符串的末尾加一个尾加一个“串结束标志串结束标志“,因此在程序中,因此在程序中,长度为长

13、度为n n个字符个字符的字符串常量,在内存中占有的字符串常量,在内存中占有n+1n+1个字节的存储空间个字节的存储空间。第2章 C语言基础 13二、二、常量常量例如例如:a与与a是是C语言中两种完全不同类型的数据。语言中两种完全不同类型的数据。aa 0a与与a在内存的存储形式在内存的存储形式注意注意:不要将不要将字符常量字符常量和和字符串常量字符串常量混淆混淆例如,字符串例如,字符串“ABCDEF”有有6 6个字符,个字符,存储于内存中时,共占存储于内存中时,共占7 7个字节个字节,最后一个字节为,最后一个字节为0第2章 C语言基础 14(五)转义字符(五)转义字符转转义义字字符符是是一一种种

14、特特殊殊的的字字符符常常量量。转转义义字字符符以以反反斜斜线线“”开头,后跟一个或几个字符。开头,后跟一个或几个字符。转转义义字字符符主主要要用用来来表表示示那那些些用用一一般般字字符符不不便便于于表表示示的的控控制制代码。常用的转义字符及其含义:代码。常用的转义字符及其含义:(p12)转义字符转义字符转义字符的意义转义字符的意义n回车换行回车换行t横向跳到下一制表位置横向跳到下一制表位置v竖向跳格竖向跳格b退格退格r回车回车f走纸换页走纸换页反斜线符反斜线符“”单引号符单引号符a鸣铃鸣铃ddd三位八进制数的值所代表的三位八进制数的值所代表的ASCII字符字符xhh两位十六进制数所代表的两位十

15、六进制数所代表的ASCII字符字符二、二、常量常量第2章 C语言基础 15例:例:main()printf(“abctdebfghin”);printf(“a=65b=101c=x41n”);输出结果输出结果:a bcd e fghia=65b=Ac=A二、二、常量常量第2章 C语言基础 16(六)符号常量(六)符号常量符号常量符号常量:可以使用一个符号表示一个可以使用一个符号表示一个多次常用多次常用的常量的常量 C C 语言中使用命令语言中使用命令#define#define来定义:来定义:格式:格式:#define#define 符号常量名标识符符号常量名标识符 常数表达式常数表达式 优点

16、:优点:符号常量使程序易于阅读和修改。符号常量使程序易于阅读和修改。例如,一个程序中多处用到学生人数例如,一个程序中多处用到学生人数6060,当有学生人数改变,当有学生人数改变为为6565,修改这个程序很困难。而使用符号常量,只要将,修改这个程序很困难。而使用符号常量,只要将#define NUM 60#define NUM 60 改为改为#define NUM 65#define NUM 65,就可以了。,就可以了。无分号无分号二、二、常量常量第2章 C语言基础 17例:求一个半径为例:求一个半径为r的球的体积和表面积的的球的体积和表面积的C程序程序#definePI3.14159/*定义定

17、义PI为符号常量,值为为符号常量,值为3.1415*/voidmain()floatv,s,r;scanf(“%f”,&r);v=4.0/3.0*PI*r*r*rs=4*PI*r*r;printf(v=%f,s=%fn,v,s);说明说明:(1)符号常量名常常用大写字)符号常量名常常用大写字母、变量名用小写字母。母、变量名用小写字母。(2)符号常量不能在其作用域)符号常量不能在其作用域范围内重新赋值。范围内重新赋值。二、二、常量常量第2章 C语言基础 18三、三、变量量 (一)(一)变量的定义变量的定义简单定义简单定义:在程序运行时,其值能被在程序运行时,其值能被改变改变的量叫变量的量叫变量变

18、量包括:变量包括:一个名字一个名字和和相应的数据类型相应的数据类型通过名字来引用一个变量,而数据类型则决定了该变通过名字来引用一个变量,而数据类型则决定了该变量的存储方式和在内存中占据存储单元的大小量的存储方式和在内存中占据存储单元的大小 说明:说明:变量名变量名和和变量值变量值这两个概念的区别这两个概念的区别定义:定义:intx=20;第2章 C语言基础 19C语言中使用的变量都要作类型强制定义,即要求语言中使用的变量都要作类型强制定义,即要求“先定先定义,后使用义,后使用”的原则。的原则。其目的:其目的:1)保证程序中变量名使用的正确性)保证程序中变量名使用的正确性2)编译程序为其分配相应

19、的储存单元)编译程序为其分配相应的储存单元3)保证运算的合法性)保证运算的合法性定义形式:定义形式:类型说明符类型说明符 变量名列表变量名列表;三、三、变量量 第2章 C语言基础 20实型变量:实型变量:1.单精度实型单精度实型:floata;4个字节个字节2.双精度实型双精度实型:doublea;8个字节个字节charch;/*定义定义ch为字符型变量为字符型变量*/inti,j;/*定义定义i,j为基本整型变量为基本整型变量*/longk,n,m;/*定义定义k,n,m为长整型变量为长整型变量*/floatx,y,z;/*定义定义x,y,z单精度实型变量单精度实型变量*/doublesum

20、,t;/*定义定义sum,t双精度实型变量双精度实型变量*/三、三、变量量 第2章 C语言基础 21(二)变量的赋初值(二)变量的赋初值 C C语言中,当定义一个变量后,系统只是按定义的数语言中,当定义一个变量后,系统只是按定义的数据类型分配其相应的存储单元,据类型分配其相应的存储单元,并不对其单元初始化并不对其单元初始化,如,如果在果在赋初值之前直接使用该变量,则是一个不定值赋初值之前直接使用该变量,则是一个不定值。例如:例如:voidmain()intk;printf(“k=%dn”,k);程序运行,输出程序运行,输出k的值就是一个无意义的的值就是一个无意义的不定值,并在不同系统不定值,并

21、在不同系统环境下运行的结果也可环境下运行的结果也可能完全不同。能完全不同。三、三、变量量 第2章 C语言基础 22赋初值的一般形式为:赋初值的一般形式为:(1)类型说明符类型说明符变量变量1=值值1,变量,变量2=值值2,;(2)类型说明符类型说明符变量变量1,变量变量2,变量变量3;变量变量1=值值1;变量;变量2=值值2;例如:例如:inta=10,b=10,c=10;等价于等价于inta,b,c;a=10;b=10;c=10;注意:注意:在在说明说明中中不允许连续赋值不允许连续赋值,但在,但在变量定义变量定义后,可以后,可以使使用用连续赋值连续赋值语句初始化语句初始化;三、三、变量量 如

22、:如:inta=b=c=1;是不合法的;是不合法的;inta,b,c;a=b=c=1;是合法的是合法的第2章 C语言基础 231.一个字符变量存放字符常量,在内存中是以一个字符变量存放字符常量,在内存中是以ASCII码码的形的形式式存存储的。储的。字符数据在内存中的存储形式及其使用方法:字符数据在内存中的存储形式及其使用方法:2.字符型数据与整型数据的关系字符型数据与整型数据的关系:二者可以进行转换。二者可以进行转换。(1)一个字符数据既可以字符形式输出,也可以整数据形式输出。一个字符数据既可以字符形式输出,也可以整数据形式输出。(2)二者可以互相赋值。二者可以互相赋值。(3)字符型数据可以进

23、行算术运算。字符型数据可以进行算术运算。三、三、变量量 第2章 C语言基础 24例例1main()charc1,c2;inti;c1=65;c2=66;i=C;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);printf(“%d,%c”,i,i);例例2main()charch;inti;ch=A;ch=ch+32;i=ch;printf(“%dis%cn”,i,ch);printf(“%cis%dn”,ch,ch);三、三、变量量 第2章 C语言基础 25四、四、运算符与表达式运算符与表达式C C语言中的运算符语言中的运算符语言中的运算符语言中的运

24、算符:语言中运算符和表达式数量之多,语言中运算符和表达式数量之多,在高级语言中是少在高级语言中是少见的见的,正是丰富的运算符和表达式使语言功能十分完善。正是丰富的运算符和表达式使语言功能十分完善。这也是这也是C语言的主要特点之一。语言的主要特点之一。运算符的种类运算符的种类C语言的运算符共有语言的运算符共有十三类十三类第2章 C语言基础 26常用运算符及表达式:常用运算符及表达式:常用运算符及表达式:常用运算符及表达式:算术运算符算术运算符根据运算符的性质分类根据运算符的性质分类逻辑运算符逻辑运算符关系运算符关系运算符赋值运算符赋值运算符位运算位运算单目运算符单目运算符根据所需的运算对象即操作

25、数的个数分类根据所需的运算对象即操作数的个数分类双目运算符双目运算符三目运算符三目运算符四、四、运算符与表达式运算符与表达式第2章 C语言基础 27运算运算对数据的加工(基本操作)。对数据的加工(基本操作)。运算符运算符描述运算的符号,即操作符。描述运算的符号,即操作符。运算量运算量操作数,被运算的对象(数据)。操作数,被运算的对象(数据)。表达式表达式由运算符和运算量组成的式子。由运算符和运算量组成的式子。语语言言的的运运算算符符不不仅仅具具有有不不同同的的优优先先级级,而而且且还还有有一一个个特点,就是它的特点,就是它的结合性结合性。因此,在表达式中,各运算量参与运算的先后顺序不仅因此,在

26、表达式中,各运算量参与运算的先后顺序不仅要遵守运算符要遵守运算符优先级优先级的规定,还要受运算符的规定,还要受运算符结合性结合性的制约,的制约,以便确定是自左向右进行运算还是自右向左进行运算。以便确定是自左向右进行运算还是自右向左进行运算。四、四、运算符与表达式运算符与表达式第2章 C语言基础 28(一)算术运算符与算术表达式(一)算术运算符与算术表达式 (1 1)C C语言的基本算术运算符:语言的基本算术运算符:加法加法+减法减法-乘法乘法*除法除法/求余求余%其中:求余其中:求余%运算要求两个运算量均为运算要求两个运算量均为intint 当当“/”“/”被用于整数或字符被用于整数或字符时时

27、,结结果取整果取整 例如:例如:5/25/2结果结果2 2,1/21/2的结果的结果0 0 1.关于关于%的说明:的说明:运算符运算符%两边的操作数必须为整数两边的操作数必须为整数结果为两操作数整除后的余数结果为两操作数整除后的余数余数的符号与被除数符号相同余数的符号与被除数符号相同例如:例如:12%(-7)=5(-12)%7=-52.关于关于/的说明:的说明:如果两操作数均为整数,则其结果为整数如果两操作数均为整数,则其结果为整数如果其中一个操作数为实型数,则其结果为如果其中一个操作数为实型数,则其结果为double型。型。例如:例如:6/4=16.0/4=1.500000四、四、运算符与表

28、达式运算符与表达式第2章 C语言基础 29+,-运算符为单目运算,运算符为单目运算,要求运算对象只能是要求运算对象只能是要求运算对象只能是要求运算对象只能是变量变量变量变量结合方向:为由右至左。结合方向:为由右至左。优先级:优先级:高于双目运算高于双目运算可有以下几种形式:可有以下几种形式:+i变量变量i自增自增1后再参与其它运算。后再参与其它运算。i+变量变量i参与运算后,参与运算后,i的值再自增的值再自增1。-i变量变量i自减自减1后再参与其它运算。后再参与其它运算。i-变量变量i参与运算后,参与运算后,i的值再自减的值再自减1。(2 2)自增,自减运算符自增,自减运算符自增运算符:自增运

29、算符:+其功能是使变量的值自增其功能是使变量的值自增1。自减运算符:自减运算符:-其功能是使变量值自减其功能是使变量值自减1。四、四、运算符与表达式运算符与表达式第2章 C语言基础 30例例2-3:main()intx,y;x=10;y=+x;printf(“%d,%d”,x,y);程序运行后,输出结是:程序运行后,输出结是:11,11 11,11思考:思考:如果将程序的第如果将程序的第2 2行改为:行改为:x=10 x=10;y=x+y=x+;结果如何?结果如何?四、四、运算符与表达式运算符与表达式第2章 C语言基础 31【注意】【注意】【注意】【注意】:(1 1)自增自减运算符的优先级较高

30、,和单目运算符相)自增自减运算符的优先级较高,和单目运算符相同。其结合方向是同。其结合方向是“自右向左自右向左”(右结合性)。(右结合性)。v例如:表达式例如:表达式-i+-i+由于由于“-”“-”和和“+”“+”优先级相同,均为右结合性,因此相优先级相同,均为右结合性,因此相当于当于-(i+)-(i+)。(2 2)尽管自增自减运算符给程序员带来了方便,但尽管自增自减运算符给程序员带来了方便,但同时也带来了副作用。同时也带来了副作用。v例如例如:printf(%d,%dn,i,i+);:printf(%d,%dn,i,i+);在不同的编译环境下结果有可能不同。若在不同的编译环境下结果有可能不同

31、。若i i的值为的值为3 3,则,则结果可能是结果可能是“3,3”(Visual C+6.0)“3,3”(Visual C+6.0),也可能是,也可能是“4,3”“4,3”(TC)(TC)。四、四、运算符与表达式运算符与表达式第2章 C语言基础 32四、四、运算符与表达式运算符与表达式【注意】【注意】【注意】【注意】:(3)例如)例如:i+jC编译在处理时尽可能多地自左而右将若干个编译在处理时尽可能多地自左而右将若干个字符组成一个运算符(在处理标识符和关键字时字符组成一个运算符(在处理标识符和关键字时也按同一原则处理),将解释为也按同一原则处理),将解释为(i+)+j,而不是,而不是i+(+j

32、)。第2章 C语言基础 33算术表达式算术表达式定义:定义:由由算术算术运算符、括弧、内部函数及数据运算符、括弧、内部函数及数据组组成的式子成的式子需要掌握的书写原则:需要掌握的书写原则:(1 1)表表达达式式中中的的所所有有运运算算符符和和操操作作数数必必须须并并排排书书写写。不不能能出现上下标出现上下标(如如x x2 2,x x2 2等等)和数学中的分数线和数学中的分数线。(2 2)在)在C C表达式中表达式中不能省略乘号不能省略乘号(如(如2ab2ab、xyxy等)。等)。(3 3)要要注注意意各各种种运运算算符符的的优优先先级级别别,为为保保持持运运算算顺顺序序,在在写写C C表表达达

33、式式时时需需要要适适当当添添加加括括号号(),若若要要用用到到库库函函数数,必必须须按库函数要求书写。按库函数要求书写。四、四、运算符与表达式运算符与表达式第2章 C语言基础 34(二)(二)关系运算符与关系表达式关系运算符与关系表达式 关系运算符及优先级别关系运算符及优先级别 比较两个量的运算符称为比较两个量的运算符称为关系运算符关系运算符。在语言中有以下关系运算符:在语言中有以下关系运算符:,=,=,=,!=!=!=!=关系运算符的优先级:关系运算符的优先级:(1)(1)、=、=关系运算符关系运算符 赋值运算符赋值运算符 四、四、运算符与表达式运算符与表达式第2章 C语言基础 35 关系表

34、达式的一般形式为:关系表达式的一般形式为:表达式表达式 关系运算符关系运算符 表达式表达式 关系表达式的值是关系表达式的值是:关系成立为关系成立为“真真”,不成立则为不成立则为“假假”C C语言中用语言中用 “1”1”表示表示“真真”“0”0”表示表示“假假”例如:例如:a+bc-dx3/2a+1c-i-5*j=k+1都是合法的关系表达式。都是合法的关系表达式。四、四、运算符与表达式运算符与表达式第2章 C语言基础 36例如:当例如:当a=5,b=4,c=3时时ac)a!=!=(c=b)又如:又如:(a=3)(b=5)又如:又如:当当a=5,b=4时时a=a+(3&|而且:而且:&,|低于关系

35、运算符低于关系运算符!高于算术运算符!高于算术运算符四、四、运算符与表达式运算符与表达式!(非非)(高)(高)算术运算符算术运算符关系运算符关系运算符&和和|赋值运算符赋值运算符 (低)(低)第2章 C语言基础 39按照运算符的优先顺序可以得出:按照运算符的优先顺序可以得出:ab&cd!b=c|dc&x+yb)&(cd)(!b)=c)|(dc)&(x+y)b)(2)逻辑运算的值:)逻辑运算的值:逻辑运算的值也为逻辑运算的值也为“真真”和和“假假”两种,用两种,用“1”和和“0”来表示。来表示。四、四、运算符与表达式运算符与表达式第2章 C语言基础 40(3)关于逻辑运算的说明)关于逻辑运算的说

36、明表达式表达式a&b&c的求解过程的求解过程只有只有a为真时,才判别为真时,才判别b的值;只有的值;只有a和和b均为真时,才判别均为真时,才判别c的值。的值。只要只要a为假,就不再判别为假,就不再判别b和和c的值,直接求得表达式的值为假的值,直接求得表达式的值为假.表达式表达式a|b|c的求解过程的求解过程只要只要a为真,就不再判别为真,就不再判别b和和c的值,直接求得表达式的值为真。的值,直接求得表达式的值为真。只有只有a为假时,才判别为假时,才判别b的值;只有的值;只有a和和b均为假时,才判别均为假时,才判别c的值的值.四、四、运算符与表达式运算符与表达式如:设如:设a是一合法表达式是一合

37、法表达式 0&a1|a第2章 C语言基础 41(四)赋值运算符与赋值表达式(四)赋值运算符与赋值表达式 1.简单赋值运算符与表达式简单赋值运算符与表达式 其一般形式为:其一般形式为:变量变量=表达式表达式功能:计算表达式的值再赋予左边的变量。功能:计算表达式的值再赋予左边的变量。整个赋值表达式的值整个赋值表达式的值为为:左边变量的值左边变量的值 例如:例如:x=a+bw=sin(a)+sin(b)赋值运算符的结合方向:由右至左赋值运算符的结合方向:由右至左因此因此a=b=c=5可理解为:可理解为:a=(b=(c=5)优先级优先级:低于条件运算符:低于条件运算符?:?:,高于逗号运算符,高于逗号

38、运算符 ,在在赋值表达式的未尾加上分号,就构成为赋值表达式的未尾加上分号,就构成为赋值赋值语句语句.四、四、运算符与表达式运算符与表达式第2章 C语言基础 42说明说明:如如果果赋赋值值运运算算符符两两边边的的数数据据类类型型不不相相同同,系系统统将将自自动动进进行行类类型型转换,即转换,即把赋值号右边的类型换成左边的类型。把赋值号右边的类型换成左边的类型。具体转换规定如下:具体转换规定如下:1 1)实型赋予整型,舍去小数部分。)实型赋予整型,舍去小数部分。2 2)整整型型赋赋予予实实型型,数数值值不不变变,但但将将以以浮浮点点形形式式存存放放,即即增增加加小数部分小数部分(小数部分的值为小数

39、部分的值为0)0)。3)3)字字符符型型赋赋予予整整型型,由由于于字字符符型型为为一一个个字字节节,整整型型为为二二个个字字节,故将字符的节,故将字符的ASCIIASCII码值放到整型量的低八位中,高八位为码值放到整型量的低八位中,高八位为0 0。4)4)整型赋予字符型,只把低八位赋予字符量。整型赋予字符型,只把低八位赋予字符量。四、四、运算符与表达式运算符与表达式第2章 C语言基础 43例例:用程序验证不同类型变量的赋值的类型转换。用程序验证不同类型变量的赋值的类型转换。void main()void main()int a,b,c=322;int a,b,c=322;float x,y=3

40、.14;float x,y=3.14;char ch1=a,ch2;char ch1=a,ch2;a=y;x=c;b=ch1;ch2=c;a=y;x=c;b=ch1;ch2=c;printf(%d,%f,%d,%c,a,x,b,ch2);printf(%d,%f,%d,%c,a,x,b,ch2);程序运行结果是:程序运行结果是:a=3,x=322.000000,b=97,ch2=B四、四、运算符与表达式运算符与表达式第2章 C语言基础 44在在赋赋值值符符“=”之之前前加加上上其其它它二二目目运运算算符符可可构构成成复复合合赋赋值值符符。如:如:+=,-=,*=,=,%=,=,&=,=,|=优

41、先级别:仅高于逗号(,)运算符优先级别:仅高于逗号(,)运算符例如:例如:a+=5等价于等价于a=a+5x*=y+7等价于等价于x=x*(y+7)r%=p等价于等价于r=r%p复合赋值符的优先级和结合方向与赋值运算符(复合赋值符的优先级和结合方向与赋值运算符(=)相同)相同2.复合赋值运算符复合赋值运算符与表达式与表达式四、四、运算符与表达式运算符与表达式第2章 C语言基础 45(五)逗号运算符和逗号表达式(五)逗号运算符和逗号表达式在在语语言言中中逗逗号号“,”也也是是一一种种运运算算符符,称称为为逗逗号号运运算算符符。其其功功能能是是把把两两个个表表达达式式连连接接起起来来组组成成一一个个

42、表表达达式式,称称为为逗逗号号表达式。表达式。其一般形式为:其一般形式为:表达式表达式1,表达式,表达式2,表达式表达式n其其求求值值过过程程是是分分别别求求表表达达式式1、表表达达式式2表表达达式式n的的值值,并并以最后一个表达式以最后一个表达式n的值作为整个逗号表达式的值。的值作为整个逗号表达式的值。四、四、运算符与表达式运算符与表达式第2章 C语言基础 46例题例题2-5main()inta=2,b=4,c=6,x,y,z;y=(x=a+b),(b+c);z=(y=(x=a+b),(b+c);printf(y=%d,x=%d,z=%d,y,x,z);结果:结果:y=6,x=6,z=10四

43、、四、运算符与表达式运算符与表达式第2章 C语言基础 47v运算规则运算规则 :四、四、运算符与表达式运算符与表达式(五)位运算(五)位运算与与或或异或异或取反取反第2章 C语言基础 48其运算过程为:其运算过程为:56(00111000)56(00111000)199(11000111)1.按位取反按位取反v【格式】【格式】x四、四、运算符与表达式运算符与表达式【例【例2-2】分析下面程序的运行结果】分析下面程序的运行结果main()unsignedcharx=56,y;y=x;printf(%dn,y);第2章 C语言基础 492.按位与按位与v【格式】【格式】x&y四、四、运算符与表达式

44、运算符与表达式【例【例2-3】分析下面程序的运行结果】分析下面程序的运行结果main()unsignedcharx=56,y=157,z;z=x&y;printf(%dn,z);其运算过程为:其运算过程为:其运算过程为:其运算过程为:56:00111000&157:100111010001100024第2章 C语言基础 50其运算过程为:其运算过程为:56:00111000|157:10011101101111011893.按位或按位或v【格式】【格式】x|y【例【例2-4】分析下面程序的运行结果】分析下面程序的运行结果main()unsignedcharx=56,y=157,z;z=x|y;

45、printf(%dn,z);四、四、运算符与表达式运算符与表达式第2章 C语言基础 514.按位异或按位异或v【格式】【格式】xy四、四、运算符与表达式运算符与表达式其运算过程为:其运算过程为:56:00111000157:1001110110100101165【例【例2-5】分析下面程序的运行结果。】分析下面程序的运行结果。main()unsignedcharx=56,y=157,z;z=xy;printf(%dn,z);第2章 C语言基础 525.左位移左位移v【格式】【格式】x要位移的位数要位移的位数v【功功能能】把把操操作作对对象象的的二二进进制制数数向向左左移移动动指指定定的的位,并

46、在右面补上相应的位,并在右面补上相应的0,高位溢出。,高位溢出。v【示例】如【示例】如x=00001111,y=x要位移的位数要位移的位数v【功功能能】把把操操作作对对象象的的二二进进制制数数向向右右移移动动指指定定的的位位,移移出出的的低位舍弃;高位则:低位舍弃;高位则:(1)对无符号数和有符号中的正数,补对无符号数和有符号中的正数,补0;(2)有有符符号号数数中中的的负负数数,取取决决于于所所使使用用的的系系统统:补补0的的称称为为“逻逻辑辑右右移移”,补补1的的称称为为“算算术术右右移移”。TurboC和和其其它它一一些些C编译采用的是算术右移。编译采用的是算术右移。v【示例】如【示例】

47、如x=01010001,y=x2,则,则y=00010100。v【注注意意】右右移移会会引引起起数数据据的的变变化化,具具体体说说,右右移移一一位位相相当当于于对对原原来来的的数数值值除除以以2。右右移移n位位相相当当于于对对原原来来的的数数值值除除以以2n。但但此此结结论论只只适适用用于于该该数数右右移移被被溢溢出出舍舍弃弃的的低低位位中中不不包包含含1的的情况。情况。四、四、运算符与表达式运算符与表达式第2章 C语言基础 54【说明】【说明】(1)复合赋值运算符复合赋值运算符除按位取反运算外,其余除按位取反运算外,其余5个位运算符均可与赋值运个位运算符均可与赋值运算符一起,构成复合赋值运算

48、符:算符一起,构成复合赋值运算符:&=、|=、=、=。(a=2相当于相当于a=a2)(2)不不同同长长度度数数据据间间的的位位运运算算低低字字节节对对齐齐,短短数数的高字节按最高位补位:的高字节按最高位补位:对无符号数和有符号中的正数,补对无符号数和有符号中的正数,补0;有符号数中的负数,补有符号数中的负数,补1。四、四、运算符与表达式运算符与表达式第2章 C语言基础 55v位运算应用位运算应用 :四、四、运算符与表达式运算符与表达式清零取数要用与,某位置一可用或清零取数要用与,某位置一可用或若要取反和交换,轻轻松松用异或若要取反和交换,轻轻松松用异或课后填空课后填空4 5 6 74 5 6

49、7第2章 C语言基础 56五、五、数据类型转换数据类型转换转换规则 高 double float long unsigned 低 int char,short 1 1、类型自动转换、类型自动转换 v图图中中横横向向向向左左的的箭箭头头表表示示必必定定的的转转换换,纵纵向向的的箭箭头表示当运算对象为不同类型时转换的方向。头表示当运算对象为不同类型时转换的方向。第2章 C语言基础 572、赋值类型转换赋值类型转换(1)当当整整型型数数据据赋赋给给浮浮点点型型变变量量时时,数数值值上上不不发发生生任任何何变变化化,但有效位增加。但有效位增加。(2)当当单单、双双精精度度浮浮点点型型数数据据赋赋给给整

50、整型型变变量量时时,浮浮点点数数的的小小数部分将被舍弃。数部分将被舍弃。(3)当当长长度度长长的的整整型型数数据据赋赋给给长长度度短短的的变变量量时时,将将进进行行截截断断赋值。赋值。(4)当整型数据赋给长度相同的变量时,将进行原样赋值。当整型数据赋给长度相同的变量时,将进行原样赋值。五、数据类型转换第2章 C语言基础 58(5)将字符型数据赋给整型变量时,由于字符只占一个将字符型数据赋给整型变量时,由于字符只占一个字节,而整型变量为字节,而整型变量为4个字节,因此将字符数据(个字节,因此将字符数据(8位)放位)放到整型变量低到整型变量低8位中。位中。将将unsignedchar型数据赋给型数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com