版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 数据类型与运算规则数据类型与运算规则3.1 3.1 数据与数据类型数据与数据类型3.2 C3.2 C语言的基本数据类型及其表示语言的基本数据类型及其表示3.3 3.3 算术运算与赋值运算算术运算与赋值运算3.4 3.4 关系运算与逻辑运算关系运算与逻辑运算3.5 3.5 位运算位运算3.6 3.6 其他运算其他运算3.7 3.7 混合运算及数据类型转换混合运算及数据类型转换如何描述上述表达式中的数据、运算符号和如何描述上述表达式中的数据、运算符号和运算过程?运算过程?数据:是程序加工、处理的对象,也是加工的结数据:是程序加工、处理的对象,也是加工的结 果;果;数据类型:具有同样性
2、质(能够作同样的操作,采数据类型:具有同样性质(能够作同样的操作,采 用同样的编码方式等)的数据集合称为数据用同样的编码方式等)的数据集合称为数据 类型;类型;每种数据类型都有固定的表示方式,也就确定了可每种数据类型都有固定的表示方式,也就确定了可能表示的数据范围和在内存中的存放形式;能表示的数据范围和在内存中的存放形式;C C语言为每个类型定义了一个标识符,称为类型语言为每个类型定义了一个标识符,称为类型名,如整数型用名,如整数型用intint表示;表示;3.2 C3.2 C语言的基本数据类型及其表示语言的基本数据类型及其表示常量与变量常量与变量整型类型及其表示整型类型及其表示实型类型及其表
3、示实型类型及其表示字符型类型及其表示字符型类型及其表示指针型类型及其表示指针型类型及其表示变量的初始化变量的初始化l常量常量: :在程序运行过程中,其值不能改变的量。在程序运行过程中,其值不能改变的量。如如: 3: 3,4.3,-1,4.3,-1,A A, , “ABAB”;l符号常量:符号常量:用标识符来表示常量;用标识符来表示常量;使用宏定义命令对符号常量进行定义;使用宏定义命令对符号常量进行定义;定义:定义: #define #define 标识符标识符 常量常量例如:例如: #define PI 3.1415926#define PI 3.1415926l变量: 在程序运行过程中,其值
4、能改变的量。在程序运行过程中,其值能改变的量。对变量的基本操作:对变量的基本操作:赋值:赋值:取值:取值: 变量名按标识符规则组成变量名按标识符规则组成: : 字母或下划线打头的字母、数字或字母或下划线打头的字母、数字或 下划线序列;下划线序列; ab ab,b3b3,c_7, _max,Intc_7, _max,Int 7t, 99r 7t, 99r,int,int,对变量的定义:对变量的定义:类型说明符类型说明符 变量名表;变量名表;例如:例如: int a,b,c;int a,b,c;变量必须先定义后使用;变量必须先定义后使用;变量的变量的3 3个属性个属性: :变量地址;变量地址;变量
5、内容;变量内容;变量名;变量名;整型常量:整型常量:十进制整型常量:十进制整型常量:123123,8 8,-10-10等;等;八进制整型常量:八进制整型常量:以以数字数字0 0 打头的数字序列打头的数字序列(0-7(0-7)如如 056056, 017017, 078078;十六进制整型常量:十六进制整型常量:以以数字数字0 0和字母和字母x x打头的序列(打头的序列(0 - 90 - 9,a - fa - f)如如 0 x1230 x123,0 x3A 0 x3A ,0 x9g0 x9g;长整型常量在常量之后加上字母长整型常量在常量之后加上字母“l l”或或“L L”, ,如如123L123
6、L,40000L40000L等;等;l整型变量:整型变量:名称名称 占内存字节占内存字节 表示范围表示范围 说明方法说明方法基本整型基本整型 2 -22 -215 15 2 21515-1 int a,b;-1 int a,b;短整型短整型 2 2 同上同上 short a,b;short a,b;无符号整型无符号整型 2 0 2 0 65535 unsigned a,b; 65535 unsigned a,b;长整型长整型 4 -24 -23131-2-231 31 1 long a,b;1 long a,b;无符号长整型无符号长整型 4 0 4 0 2 232 32 1 unsigned
7、long a;1 unsigned long a; l整型变量:整型变量:以关键字以关键字intint为基本类型说明符;为基本类型说明符;配合四个类型修饰符,用来改变和扩充基本类型的含义;配合四个类型修饰符,用来改变和扩充基本类型的含义;l整型数据在使用中应注意的问题:整型数据在使用中应注意的问题:变量要先定义后使用;变量要先定义后使用;数据溢出;数据溢出; 若若 int aint a,b b;unsigned cunsigned c;long d long d ; a=123a=123; d= -105000d= -105000; b=40000b=40000; c= 105000c= 10
8、5000;常量与变量的类型要匹配;常量与变量的类型要匹配;实型常量:实型常量:小数形式:至少有一个小数点和一个数字,小数形式:至少有一个小数点和一个数字, 如如12.312.3,87.487.4,-0.25-0.25等;等;指数形式:由十进制小数加上指数部分组成,指数形式:由十进制小数加上指数部分组成, 形式为:十进制小数形式为:十进制小数e(E)e(E)指数指数2.5e3 56E8 66e32.5e3 56E8 66e3e2 1.2e 3e1.2e2 1.2e 3e1.2实型变量:实型变量:名称名称 存储字节存储字节 表示范围表示范围 有效位有效位 说明方法说明方法单精度单精度 4 -104
9、 -1038 38 - 10- 1038 38 7 float a;7 float a;双精度双精度 8 -108 -10308308 - 10 - 10308 308 16 double a;16 double a;长双精度长双精度 16 -1016 -1049324932 10 104932 4932 19 long double a;19 long double a;0 11111110 111111111111111111111111-2-23 127-1=1272 2127 127 10103838163.2 C语言的基本数据类型其中,小数部分一般都采用规格化的数据形其中,小数部分一
10、般都采用规格化的数据形式,即:小数点放在第一个有效数字前面,式,即:小数点放在第一个有效数字前面,使小数部分放小于使小数部分放小于1的纯小数。的纯小数。单精度实数的精度取决于小数部分的单精度实数的精度取决于小数部分的23位二位二进制数位所能表达的数值位数,将其转换为进制数位所能表达的数值位数,将其转换为十进制,最多可表示十进制,最多可表示7位十进制数字,所以单位十进制数字,所以单精度实数的有效位是精度实数的有效位是7位。位。双精度型用于扩大存储位数,目的是增加实双精度型用于扩大存储位数,目的是增加实数的长度,减少累积误差,改善计算精度数的长度,减少累积误差,改善计算精度l实型变量:实型变量:以
11、三种关键字定义实型变量;以三种关键字定义实型变量;floatfloat 单精度型单精度型doubledouble 双精度型双精度型long doublelong double 长双精度型长双精度型字符型类型及其表示字符型类型及其表示l字符型常量:字符型常量:普通字符:普通字符:单引号单引号括起来的单个字符,括起来的单个字符, 如如a a, ,B B等;等;转义字符:以转义标识符转义字符:以转义标识符“ ”开始的字符序列,开始的字符序列,例如:例如:n(n(换行换行),t(),t(跳格跳格),b(),b(退格退格),().),(). dddddd(1(1到到3 3位位8 8进制数表示的字符进制数
12、表示的字符) )xxdd(1dd(1到到2 2位位1616进制数表示的字符进制数表示的字符) )字符型类型及其表示字符型类型及其表示转义字符转义字符:是特殊性质的字符常量,:是特殊性质的字符常量,用于表示常用的但却难以用一般形用于表示常用的但却难以用一般形式表示的不可显示字符;式表示的不可显示字符;转义字符的表示转义字符的表示:用一个转义标识:用一个转义标识符符“”开头,后面是需要的转义字开头,后面是需要的转义字符。常用的转义字符序列的字符常符。常用的转义字符序列的字符常量见表量见表:20字符型类型及其表示字符型类型及其表示转义字符转义字符“n”中的中的n已不代表字符常量已不代表字符常量“n”
13、,n转义成换行。转义成换行。转义字符转义字符“015”是是“ddd”形式的转义字形式的转义字符,其中符,其中“015”是八进制字符串,它表示了是八进制字符串,它表示了ASCII码表中编码为十进制码表中编码为十进制13的字符,也就的字符,也就是回车。是回车。转义字符转义字符“x1f”是是“xdd”形式的转义字符,形式的转义字符,其中其中“1f”是十六进制字符串,它表示了是十六进制字符串,它表示了ASCII码表中编码为十进制码表中编码为十进制31的字符,也就的字符,也就是是。字符型类型及其表示字符型类型及其表示l字符串常量:字符串常量:双引号括起的一串字符,双引号括起的一串字符,例如例如“Chin
14、aChina”, “BeijingBeijing”;系统对字符串尾自动加系统对字符串尾自动加00作为字符串终结符;作为字符串终结符; a a与与“a a”的区别:的区别:字符常量字符常量 a a, , 占占1 1个字节个字节字符串常量字符串常量 “a a”, , 占占2 2个字节个字节字符型类型及其表示字符型类型及其表示字符型变量:只存放一个字符的变量。只存放一个字符的变量。用用charchar进行说明进行说明; ;一个字符型变量可存放一个字符,占用一个字符型变量可存放一个字符,占用一个字节一个字节, ,存放字符的存放字符的ASCIIASCII码;码; char a;int b;char a;
15、int b; a= a=A A;b=a+32; printf(;b=a+32; printf(“%c,%d%c,%d”,b,a);,b,a); 输出输出: a,65: a,65字符型数据与整型数据可以通用字符型数据与整型数据可以通用指针型类型及其表示指针指针是一种数据类型,是一个变量在内存中所是一种数据类型,是一个变量在内存中所对应存储单元的地址;对应存储单元的地址;指针变量指针变量是存放地址的变量;是存放地址的变量;指针就是地址,该地址就是某个变量在内存单指针就是地址,该地址就是某个变量在内存单元中对应的存放位置;元中对应的存放位置;指针型类型及其表示变量的指针与变量的区别:变量的指针与变量
16、的区别:变量变量c c的指针与变量的指针与变量c c的区别是:的区别是:c c的值的值是是A A,它是内存,它是内存单元单元10001000的内容;的内容;而而c c的指针是存放变的指针是存放变量量c c的地址的地址10001000,通,通过该指针可以间接过该指针可以间接取得变量取得变量c c的值;的值;变量变量c100010012000A1000变量变量pc (指针变量指针变量)指针型类型及其表示l指针变量的说明:指针变量的说明:类型说明符类型说明符 * *变量名变量名例如例如 int a,int a,* *p p;“* *”号表示它后面的变量名为指针类型,称为指针变量;号表示它后面的变量名
17、为指针类型,称为指针变量;类型说明符表示指针变量的类型,并非指针变量自身的类类型说明符表示指针变量的类型,并非指针变量自身的类型,而是指针变量型,而是指针变量所指对象的类型所指对象的类型;指针可以指向任何类型的对象指针可以指向任何类型的对象,包括指针;,包括指针;l指针变量的使用:指针变量的使用:& &:取地址运算符,:取地址运算符,&a &a 表示取表示取a a的地址;若的地址;若p=&a;p=&a;则指针变则指针变量量p p中存放中存放a a的地址,称的地址,称p p指向指向a a;* *:指针内容运算符,:指针内容运算符,* *p p表示取
18、指针表示取指针p p所指内存单元的内容;所指内存单元的内容;变量的初始化先定义,再赋值;先定义,再赋值;int x,y;int x,y;x = 10, y = 30;x = 10, y = 30;定义变量的同时对变量赋初值;定义变量的同时对变量赋初值;int x = 10,y = 30;int x = 10,y = 30;不初始化会怎样?不初始化会怎样?27C语言的基本数据类型本节结构本节结构常量常量字符常量字符常量数值常量数值常量计算机计算机语言表语言表示数据示数据的基本的基本形式形式实型常量实型常量整型常量整型常量字符常量字符常量字符串常量字符串常量变量变量字符变量字符变量数值变量数值变量
19、实型变量实型变量整型变量整型变量指针变量指针变量整型整型实型实型字符型字符型计算机语言表示数据的基本形式计算机语言表示数据的基本形式C程序中,常量直接以自身的存在形式体程序中,常量直接以自身的存在形式体现其值和类型:现其值和类型:12,0 x12,0 x12L,12.,.12,2e3,1.2f,2e3L变量以标识符的形式来表示类型:变量以标识符的形式来表示类型:int a; char c; double x, y;常量不占内存,程序运行时它作为操作常量不占内存,程序运行时它作为操作对象直接出现在运算器的各种寄存器中;对象直接出现在运算器的各种寄存器中;3.3 3.3 算术运算与赋值运算算术运算
20、与赋值运算lC C语言中的运算规则语言中的运算规则l算术运算符与算术表达式算术运算符与算术表达式l自增、自减运算自增、自减运算l赋值运算符和赋值表达式赋值运算符和赋值表达式l组合赋值运算符和组合赋值表达式组合赋值运算符和组合赋值表达式C C语言中的运算规则语言中的运算规则运算符按照其在表达式中与运算对象的关系运算符按照其在表达式中与运算对象的关系可分为:可分为:单目运算:连接一个运算对象;单目运算:连接一个运算对象;双目运算:连接两个运算对象;双目运算:连接两个运算对象;三目运算:连接三个运算对象;三目运算:连接三个运算对象;运算符按照其在表达式中所起的作用可以分运算符按照其在表达式中所起的作
21、用可以分为:为:算术运算符:算术运算符: + +,- -,自增自减运算符:自增自减运算符:+,-关系运算符:关系运算符:, , b)?a:bmax = (ab)?a:b;按照运算符在表达式中的作用,表达式可分为:按照运算符在表达式中的作用,表达式可分为:算术表达式算术表达式 如如 a+b;a+b;关系表达式关系表达式 如如 a!=b; ca;a!=b; ca;赋值表达式赋值表达式 如如 a = 3; a = 3; C C语言中的运算规则语言中的运算规则l优先级:优先级:同一个表达式中不同运算符进行计算时的先后次序;同一个表达式中不同运算符进行计算时的先后次序;当变量的两边均有运算符时,其当变量
22、的两边均有运算符时,其优先级高优先级高的先运算的先运算. .a + b a + b d dl结合性:结合性: 是指同一个表达式中相同优先级的多个运算应遵循的运算是指同一个表达式中相同优先级的多个运算应遵循的运算 顺序;顺序;左结合左结合从左到右(除从左到右(除“= =”外的双目运算符)外的双目运算符) a + b a + b c c (a + b) (a + b) c c 右结合右结合从右到左(单目或三目运算符)从右到左(单目或三目运算符) -k+ -k+ -(k+) -(k+)C C语言允许的算术运算符包括:语言允许的算术运算符包括: 加法运算或取正值运算,双目、单目运算符,作为加法运算或取
23、正值运算,双目、单目运算符,作为 单目运算符时优先级高于双目运算符,如单目运算符时优先级高于双目运算符,如 a+b;+5;a+b;+5; 减法运算或取负值运算,双目、单目运算符,作为减法运算或取负值运算,双目、单目运算符,作为 单目运算符时优先级高于双目运算符,如单目运算符时优先级高于双目运算符,如 a-b;-5;a-b;-5;* * 乘法运算,双目运算符,如乘法运算,双目运算符,如 a a* *b;b;/ / 除法运算,双目运算符,如除法运算,双目运算符,如a/b; 13/4=?a/b; 13/4=?% % 模运算(求余运算),双目运算符,要求两个运算模运算(求余运算),双目运算符,要求两个
24、运算 对象都为整型,例如对象都为整型,例如 5%7= ?, 7%5= ?, 8%3.2 =?5%7= ?, 7%5= ?, 8%3.2 =?52算术运算符的优先级及结合性为:算术运算符的优先级及结合性为:算术表达式:算术表达式:由算术运算符,常数,变量,函数和括号组成,由算术运算符,常数,变量,函数和括号组成,其基本形式与数学上的算术表达式类似其基本形式与数学上的算术表达式类似. .例如例如 12.45-4312.45-43* *5 x/(67-(12+y)5 x/(67-(12+y)* *a)a)双目运算符两侧运算对象的类型如果不一致,系双目运算符两侧运算对象的类型如果不一致,系 统将自动按
25、转换规律进行转换;统将自动按转换规律进行转换;使用括号可以改变表达式的运算顺序;使用括号可以改变表达式的运算顺序;函数调用也可作为算术表达式中的运算对象;函数调用也可作为算术表达式中的运算对象;自增自增“”、自减、自减“”运算:运算:单目运算,其作用是使单目运算,其作用是使变量变量的值增的值增1 1或减或减1 1;优先级高于所有双目运算;优先级高于所有双目运算;应用形式:应用形式:前缀形式:前缀形式:+i; +i; i; i; 表示变量在使用前自动加表示变量在使用前自动加1 1或减或减1 1;后缀形式:后缀形式:i+;ii+;i; ; 表示变量在使用后自动加表示变量在使用后自动加1 1或减或减
26、1 1;+、 运算运算只能作用于变量只能作用于变量,不能用于表达式或常量;,不能用于表达式或常量;用于用于+、 运算的变量只能是整型运算的变量只能是整型, ,字符型和指针变量;字符型和指针变量;前缀形式与后缀形式的意义不同;前缀形式与后缀形式的意义不同;+、 的结合性是自右向左的;的结合性是自右向左的; 若若 int a=5,b;int a=5,b; b=(a+)+(a+); b= a=b=(a+)+(a+); b= a= b=(+a)+(+a); b= a= b=(+a)+(+a); b= a= b=( b=( a)+(a-); b= a=a)+(a-); b= a= 10714783右结合
27、右结合-k+ -k+ -(k+) -(k+),能否用于,能否用于floatfloat型数据?型数据?,用于,用于floatfloat型数据时编译没有错误型数据时编译没有错误结果不确定结果不确定关于,关于,在一行语句中最好只出现一次在一行语句中最好只出现一次+,-+,-,多了可读性会很,多了可读性会很差;差;C C语言中允许编译程序自由重排表达式的顺序,以产生语言中允许编译程序自由重排表达式的顺序,以产生最优代码,因此语句过于复杂时,采用不同的编译程序最优代码,因此语句过于复杂时,采用不同的编译程序编译时,可能会产生不同的运算结果。编译时,可能会产生不同的运算结果。赋值运算符:赋值运算符:“”,
28、其功能是计算赋值运算符其功能是计算赋值运算符“”右边右边表达式的值,并将计算结果赋给表达式的值,并将计算结果赋给“”左边左边的变量;的变量;若若int k,i,j,aint k,i,j,a;a=5;a=5;k=3+(a=a+2)k=3+(a=a+2);j=i=aj=i=a* *0.7;0.7;则则 a= k= i= j=a= k= i= j= 71044赋值表达式:赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式由赋值运算符将一个变量和一个表达式连接起来的式子;子;形式:形式:变量名变量名 表达式表达式; 赋值表达式的值就是赋值运算符左边变量的值;赋值表达式的值就是赋值运算符左边变量
29、的值;类型转换:类型转换:赋值运算符两边的数据类型不一致时需要进类型转赋值运算符两边的数据类型不一致时需要进类型转换;换;转换原则是以转换原则是以“= =”左边的变量的类型为准;左边的变量的类型为准;组合赋值运算符:组合赋值运算符:在赋值运算符在赋值运算符”= =”之前加上其他运算符可以构成组合运之前加上其他运算符可以构成组合运算符,用于完成赋值组合运算操作。算符,用于完成赋值组合运算操作。形式形式: : 运算符运算符 ;运算符可以是运算符可以是 、* *、/ /、% %等;等;组成的组合赋值运算符为、组成的组合赋值运算符为、* *、/=/=、等;等;组合赋值表达式:组合赋值表达式:由组合赋值
30、运算符将一个变量和一个表达式连接起来的由组合赋值运算符将一个变量和一个表达式连接起来的式子成为组合赋值表达式。式子成为组合赋值表达式。形式:形式: 变量名变量名 组合赋值运算符组合赋值运算符 表达式;表达式;其功能等价于:其功能等价于: 变量名变量名 变量名变量名 运算符运算符 表达式表达式a+=b a+=b a=a+b a=a+b a-=b a-=b a=a-b a=a-ba a* *=b =b a=a a=a* *b b a/=b a/=b a=a/b a=a/b.若若 int a=1,b=2,c=3; int a=1,b=2,c=3; 则则a+=b-=c a+=b-=c a=a+(b-=
31、c) a=a+(b-=c) a=a+(b=b-c) a=a+(b=b-c) a=a+( a=a+(b=-1b=-1) ) a=1+(-1) a=1+(-1)所以所以 a=0 b=-1a=0 b=-1关系运算符与关系表达式关系运算符与关系表达式逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式条件运算符与条件表达式条件运算符与条件表达式关系运算符:关系运算符:包括包括 、 =、=、!=!=、= = 六种六种, ,为双目运算符,结为双目运算符,结合性为从左到右结合;合性为从左到右结合; 其作用是确定两个数据之间是否存在某种关系;其作用是确定两个数据之间是否存在某种关系;优先级分两级,且低于算术运算符;优
32、先级分两级,且低于算术运算符;高级:高级: 、=低级:、!低级:、!关系表达式:关系表达式:形式:形式: 表达式表达式1 1 关系运算符关系运算符 表达式表达式2 2关系表达式的运算结果为逻辑值:关系成立,逻辑值为关系表达式的运算结果为逻辑值:关系成立,逻辑值为“真真”,用,用1 1表示;否则逻辑值为表示;否则逻辑值为“假假”,用,用0 0表示;表示; a a!=!=b b的值为的值为: : 233+82 233+82的值为的值为: : 0 x10 0 x10 的值为的值为: : 1或或0要表示数学中的要表示数学中的0 x0&x & |,! & |,逻辑运算优先级低于关
33、系运算逻辑运算优先级低于关系运算(!除外);(!除外);逻辑运算符的功能:逻辑运算符的功能:逻辑表达式:逻辑表达式:逻辑表达式运算结果为逻辑值:真逻辑表达式运算结果为逻辑值:真(1(1,判断时,判断时以非零为真以非零为真) ),假(,假(0 0););当当&左边为假左边为假( |( |左边为真左边为真) )时时, ,系统不计算系统不计算&( | )&( | )右边表达式的值;右边表达式的值;例如:设例如:设int a=1,b=0; int a=1,b=0; ba & a+ ba & a+ 的值为的值为 ? a = ? a = ?a|(+b)a|(+b)的
34、值为的值为 ? b= ? b= ?0 01 11 10 0int a=3,b=1,x=2,y=0;int a=3,b=1,x=2,y=0;(ab)&(xy) = 1(ab)&(xy) = 1 ab & xy = 1 ab & xy = 1(y|b)&(y|a) = 1(y|b)&(y|a) = 1 y|b & y|a = 1 y|b & y|a = 1 !a | ab = 1 !a | ab = 1条件运算符条件运算符: :条件运算符为唯一的三目运算符,其形式为条件运算符为唯一的三目运算符,其形式为“?:?:”条件表达式条件表达式
35、: :由条件运算符构成的表达式成为条件表达式,其形式由条件运算符构成的表达式成为条件表达式,其形式为:为: 表达式表达式1 1 ? 表达式表达式2 2 :表达式:表达式3 3条件运算符中?和:总是成对出现,其功能为:条件运算符中?和:总是成对出现,其功能为:条件表达式的优先级条件表达式的优先级: :高于赋值运算;高于赋值运算;低于关系运算、逻辑运算和算术运算;低于关系运算、逻辑运算和算术运算;表达式是右结合的;表达式是右结合的;使用条件表达式可以使程序简洁明了;使用条件表达式可以使程序简洁明了; x0 ? 0 : (x=0 ? 0 : -1)x0 ? 0 : (x=0 ? 0 : -1) ch
36、ar c=char c=A A; c=(c=c=(c=A A & c= & c=Z Z)?(c+32):c;)?(c+32):c; c= ? c= ? a 若若 x=5,y=6; x=5,y=6; k = xy?x+:y+; k = xy?3:k4?k:6; a=xy?3:k4?k:6; 则则 k= ? x= ? a= ? y= ? k= ? x= ? a= ? y= ? 5665 5位运算符位运算符按位逻辑运算按位逻辑运算移位运算移位运算位运算赋值运算符位运算赋值运算符位运算的对象是二进制位,有如下操作:位运算的对象是二进制位,有如下操作: (按位求反)按位求反) (右移右移
37、) & (按位与)按位与) (按位异或)(按位异或) | (按位或)(按位或)优先级同优先级同+,+,右结合右结合优先级比关系运算符高优先级比关系运算符高优先级比关系优先级比关系运算符低运算符低, ,比逻比逻辑运算符高辑运算符高1=01=0,0=10=1 1. 按位求反按位求反 (0000100000001000)= 11110111 = 11110111 左移左移右补右补0000010002 = 00100000000010002 = 00100000 82 = 8 82 = 00000010000010002 = 00000010 82 = 8 82 = 8* *2 2-2-2=2
38、=2111110002 = 11111110111110002 = 11111110 -82 = -8 -82 = -8* *2 2-2-2=-2=-2 3. 按位右移按位右移右移右移 正数左补正数左补0, 负数左补负数左补11&1=1, 1&0=0&1=0&0=04. 按位与按位与0101010110011001 & 0000 & 000011111111=0000=000010011001 保留特定位保留特定位按位逻辑运算与移位运算按位逻辑运算与移位运算11=00=0, 10=01=10|0=0, 1|0= 1|1=0|1=15. 按位异或按
39、位异或6. 按位或按位或0101010110011001 0000 000011111111=0101=010101100110 特定位取反特定位取反0101010110011001 | 0000 | 000011111111=0101=010111111111 特定位置赋特定位置赋1 1位运算符与赋值运算符可以组成以下五种位位运算符与赋值运算符可以组成以下五种位运算赋值运算符:运算赋值运算符:x &= y; x &= y; 相当于:相当于:x = x&y;x = x&y;x |= y; x |= y; 相当于:相当于:x = x|y;x = x|y;x = y
40、; x = y; 相当于:相当于:x = xy;x = xy;x = y; x = y; 相当于:相当于:x = xy;x = x-、 . . 运算符运算符: :用来引用结构成员的运算符用来引用结构成员的运算符; ;优先级最高优先级最高, ,左结合左结合; ;(type)(type)运算符:运算符:形式:形式:( (类型类型) )表达式表达式功能:将表达式强制转换成指定类型;功能:将表达式强制转换成指定类型;(int)(a+2int)(a+2* *0.5) 0.5) (int)a(int)a+2+2* *0.50.5 int(a+2 int(a+2* *0.5)0.5)运算符优先级小结运算符优
41、先级小结混合运算及数据类型转换l 混合运算:混合运算: 是指在一个表达式中参与运算的对象不是相 同的数据类型;整型、单精度型、双精度型数据可以混合运算。且字符整型、单精度型、双精度型数据可以混合运算。且字符型数据可以与整型通用。因此型数据可以与整型通用。因此,整型、实型整型、实型(包括单、双精度包括单、双精度)、字符型数据间可以混合运算。、字符型数据间可以混合运算。例如例如:10+a+1.5-8765.1234*b 是合法的。在进行运是合法的。在进行运算时算时, ,不同类型的数据要先转换成同一类型不同类型的数据要先转换成同一类型, ,然后然后进行运算进行运算。混合运算及数据类型转换混合运算及数
42、据类型转换l数据类型转换:数据类型转换:运算中运算中charchar型转换为型转换为intint型,型,floatfloat型转换为型转换为doubldoubl型;型;低级类型服从高级类型,并进行相应的转换;低级类型服从高级类型,并进行相应的转换;char-int-unsigned-long-float-doublechar-int-unsigned-long-float-double 低低高高赋值运算中最终结果的类型以赋值运算符左边变量的赋值运算中最终结果的类型以赋值运算符左边变量的类型为准;类型为准;l C C语言中所有的实数运算都以语言中所有的实数运算都以doubledouble进行;进
43、行;混合运算及数据类型转换混合运算及数据类型转换float a=0.5;int b;char c=a;则下列表达式的类型是 5 + 2 * a c b = 5 + 2 * a cdouble int如如 i=3;printf (“%d”,+i ); 输出输出 4 。若改为若改为 printf (“%d”, i+); 则输出则输出 3 。(1)自增运算符自增运算符(+), 自减运算符自减运算符(-),只能用于整型、只能用于整型、字符型和指针型变量,而不能用于常量或表达式。字符型和指针型变量,而不能用于常量或表达式。实际的运算为右结合实际的运算为右结合(2) +和和-的结合方向是的结合方向是“自右至左自右至左”。(右结合性)。(右结合性)-(i+)按按算术运算符的算术运算符的“自左而右自左而右”结合为结合为 (-i)+,是不合法的是不合法的自增、自减运算符自增、自减运算符i+ji+j, 是是 (i+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年公司计件工作合同2篇
- 咨询公司劳务外包合同
- 2024年智能制造工厂建设贷款合同
- 2024年国际学生交换计划合同3篇
- 2024年度卫星导航系统地面站建设合同3篇
- 2024年度瑜伽馆宣传推广合同3篇
- 2024年度影视制作发行合同(含电视剧制作)2篇
- 2024年度供应链管理合同:某制造商与某物流公司之间的供应链合作协议3篇
- 2024商标转让合同包含商标权跨境转让与法律适用合同3篇
- 2024年度体育赛事直播与数据统计技术服务合同2篇
- 先进个人主要事迹8篇
- 魁拔设定精美动态ppt作品
- 2023-2024学年四川省绵阳市小学语文三年级期末通关考试题详细参考答案解析
- 皮肤压疮不良事件质量持续改进案例分析
- 中医文化与健康知到章节答案智慧树2023年山东中医药大学
- 学会自主学习(课堂)课件
- 【管理制度】GSP兽药经营质量管理制度
- 妊娠期哮喘学习
- 供应室医务人员手卫生
- 2023年02月上海市奉贤区金汇镇度招考30名金才汇乡工作人员笔试参考题库含答案解析
- JJF 1071-2010国家计量校准规范编写规则
评论
0/150
提交评论