1、数据类型与运算规则1.1C语言程序设计教学内容语言程序设计教学内容一一 C语言程序设计概述语言程序设计概述(第第1、2章章)二二 数据类型与运算规则数据类型与运算规则(第第3章章)三三 顺序结构程序设计顺序结构程序设计(第第4章章)四四 选择结构选择结构(第第5章章)五五 循环结构循环结构(第第6章章)七七 函数函数(第第8章章)六六 数组数组(第第7章章)八八 指针指针(第第9章章)九九 结构结构(第第10章章)十十 文件文件(第第11章章)1.语言规语言规则则1.程序流程序流程程1.数据结数据结构构1.自学自学1.基础基础1.重点,重点,难难1.2第3章 数据类型与运算规则 本章要点q 数
2、据的描述规则q 数据的操作规则1.3第3章 数据类型与运算规则 数据与数据类型 C语言的基本数据类型 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换1.数据的数据的2.描述规描述规则则1.数据的数据的2.运算规运算规则则1.43.1 数据与数据类型一一引入引入什么是语言规则,为什么要用语言规则?什么是语言规则,为什么要用语言规则?l 常量常量l 变量变量l 运算符运算符l 表达式表达式l 函数函数3()3.6sin5f xx1.1.表达表达式式1.常常量量1.变变量量1.函函数数1.53.1 数据与数据类型问题问题q 常量常量3、5和和3.6的处理是否相同?的
3、处理是否相同?q 变量变量x如何表示?如何存放?如何表示?如何存放?q 计算机如何知道计算机如何知道3和和5之间的关系?之间的关系?q 如何输入?如何存放?如何输入?如何存放?q 计算机如何识别计算机如何识别“=”?运算结果放在哪?运算结果放在哪里?里?3()3.6sin5f xxx3sin51.计算机完成该计算,计算机完成该计算,首先要解决数据的首先要解决数据的输输入入和和存放存放问题问题1.63.1 数据与数据类型q程序的任务是对数据进行处理,数据是程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加给这程序处理的对象,而运算符是施加给这些数据的操作。些数据的操作。q数据数据和
4、和运算符运算符是表达式的基本元素。是表达式的基本元素。1.数据的存储数据的存储2.数据的操作数据的操作1.程序程序1.73.1 数据与数据类型二二C语言中的数据类型语言中的数据类型 整数型整数型 int 基本类型基本类型 实数型实数型 float,double 字符型字符型 char 指针类型指针类型数据类型数据类型 数组型数组型 构造类型构造类型 结构型结构型 struct 联合型联合型 union 枚举型枚举型 enum 空类型空类型 void1.8第3章 数据类型与运算规则 数据与数据类型 C语言的基本数据类型 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型
5、转换1.93.2 C语言的基本数据类型一一本节结构本节结构1.常常量量1.字符常字符常量量1.数值常数值常量量1.计算计算机语言机语言表示数表示数据的基据的基本形式本形式1.实型常实型常量量1.整型常整型常量量1.字符常字符常量量1.字符串常字符串常量量1.变变量量1.字符变字符变量量1.数值变数值变量量1.实型变实型变量量1.整型变整型变量量1.指针变指针变量量1.整整型型1.实实型型1.字符字符型型1.103.2 C语言的基本数据类型二二计算机语言表示数据的基本形式计算机语言表示数据的基本形式1.常量常量程序运行中,值保持不变的量程序运行中,值保持不变的量 常量的表示方法常量的表示方法整型
6、整型 100,125,-100,0实型实型 3.14,0.125,-3.789字符型字符型 a,b,2字符串字符串 “a”,“ab”,“1232”1.113.2 C语言的基本数据类型二二计算机语言表示数据的基本形式计算机语言表示数据的基本形式2.符号常量符号常量用来表示常量的标识符用来表示常量的标识符 例:已知圆半径例:已知圆半径r,求圆周长,求圆周长c和面积和面积s的值。的值。#define PI 3.1416int main()float r,c,s;scanf(%f,&r);c=2*PI*r;/*编译时用编译时用3.1416替换替换PI*/s=PI*r*r;/*编译时用编译时用3.141
7、6替换替换PI*/printf(c=%6.2f,s=%6.2fn,c,s);1.#include 2.#include 3.#define.1.预处预处理命令理命令1.123.2 C语言的基本数据类型二二计算机语言表示数据的基本形式计算机语言表示数据的基本形式 例:例:#define SAN 2+1如果如果x=SAN*SAN,x=?x=5x=2+1*2+1=51.133.2 C语言的基本数据类型二二计算机语言表示数据的基本形式计算机语言表示数据的基本形式3.变量变量程序运行时,值可以改变的量程序运行时,值可以改变的量 有关变量的规定:有关变量的规定:n 变量通过变量名标识,变量名和内存中变量通
8、过变量名标识,变量名和内存中的存储单元相对应。编写程序时通过变的存储单元相对应。编写程序时通过变量名来存、取存储单元;量名来存、取存储单元;n 变量必须先定义变量必须先定义(说明说明),再赋值,再使用。,再赋值,再使用。1.141.553.2 C语言的基本数据类型二二计算机语言表示数据的基本形式计算机语言表示数据的基本形式3.变量变量程序运行时,值可以改变的量程序运行时,值可以改变的量1.内存内存1.变量变量a1.1000H2.1001H3.1002H1.2561.121.常量不占用内存空间!常量不占用内存空间!1.153.2 C语言的基本数据类型二二计算机语言表示数据的基本形式计算机语言表示
9、数据的基本形式4.变量的定义变量的定义变量是以标识符的形式变量是以标识符的形式来表示类型的。在来表示类型的。在C语言中,用类型说语言中,用类型说明语句对变量进行定义,其形式如下:明语句对变量进行定义,其形式如下:类型说明符类型说明符 变量名表;变量名表;1.int a,b;/*说明说明a,b为整型变量为整型变量*/2.char c;/*说明说明c为字符变量为字符变量*/3.double x,y;/*说明说明x,y为双精度实型变量为双精度实型变量*/1.163.2 C语言的基本数据类型二二计算机语言表示数据的基本形式计算机语言表示数据的基本形式5.小结小结n C程序中,常量直接以自身的存在形式体
10、程序中,常量直接以自身的存在形式体现其值和类型:现其值和类型:12,0 x12,0 x12L,12.,.12,2e3,1.2f,2e3Ln 变量以标识符的形式来表示类型:变量以标识符的形式来表示类型:int a;char c;double x,y;n 常量不占内存,程序运行时它作为操作常量不占内存,程序运行时它作为操作对象直接出现在运算器的各种寄存器中;对象直接出现在运算器的各种寄存器中;1.173.2 C语言的基本数据类型二二计算机语言表示数据的基本形式计算机语言表示数据的基本形式n 程序中的一个变量可以看作是一个存储程序中的一个变量可以看作是一个存储数据的容器,功能是存储数据;数据的容器,
11、功能是存储数据;n C语言要求,每个变量必须先定义,再赋语言要求,每个变量必须先定义,再赋值,再使用。值,再使用。1.183.2 C语言的基本数据类型 本节介绍各种数据类型的名称、存放的长度、表示数的范围、各种数据类型变量的说明格式、初始化、常量的表示方法以及使用中的注意事项等。重点和难点q 数据的表示范围数据的表示范围q 实型数据的有效数字实型数据的有效数字q 转义字符的概念转义字符的概念1.193.2 C语言的基本数据类型三三整型数据及其表示整型数据及其表示1.整数类型整数类型1.整数基本类型表整数基本类型表1.基本整型基本整型2.短整型短整型3.长整型长整型4.无符号整型无符号整型5.无
12、符号短整无符号短整型型6.无符号长整无符号长整型型1.203.2 C语言的基本数据类型三三整型数据及其表示整型数据及其表示2.整型常量整型常量n整型常量的类型整型常量的类型q根据值大小默认类型根据值大小默认类型q在常量后面加在常量后面加l或或L,表示,表示long int型型 例如:例如:123L,0L,432l都是都是long int型常量型常量n整型常量的不同数值表示方法整型常量的不同数值表示方法十进制:十进制:09 八进制:八进制:07,以,以0开头开头十六进制:十六进制:09,AF/af,以以0 x或或0X开头开头 例如例如1.整型数据包括整整型数据包括整型常量和整型变量型常量和整型变
13、量,整型数据以二进,整型数据以二进制补码形式存储。制补码形式存储。1.整型常整型常量都是有量都是有符号的符号的1.213.2 C语言的基本数据类型三三整型数据及其表示整型数据及其表示2.整型变量整型变量n整型变量的形式整型变量的形式基本整型基本整型int短整型短整型short int长整型长整型long int无符号整型无符号整型unsigned int无符号短整型无符号短整型unsigned short无符号长整型无符号长整型unsigned longn占存储空间占存储空间1.占内存字节数占内存字节数1.2或或42.23.44.2或或45.26.41.223.2 C语言的基本数据类型三三整型
14、数据及其表示整型数据及其表示n整型变量的定义整型变量的定义类型说明符类型说明符 变量名表;变量名表;例:例:int i,j;long k,m;unsigned int x,yC中的所有变量必须先定义后使用!1.此时变量此时变量有值吗?有值吗?1.233.2 C语言的基本数据类型类型类型存储存储字节字节数数最小值最小值最大值最大值short int2-3276832767unsigned short int2065535int2-3276832767unsigned int2065535long int4-21474836482147483648unsigned long int40429496
15、72951.16位机各类型数据通常取值范围位机各类型数据通常取值范围1.243.2 C语言的基本数据类型类型类型存储存储字节字节数数最小值最小值最大值最大值short int2-3276832767unsigned short int2065535int4-21474836482147483648unsigned int404294967295long int4-21474836482147483648unsigned long int4042949672951.32位机各类型数据通常取值范围位机各类型数据通常取值范围1.253.2 C语言的基本数据类型三三整型数据及其表示整型数据及其表示qi
16、nt型数的表示范围型数的表示范围:1.绝对值最大的负数?绝对值最大的负数?1.a1.最大的正数?最大的正数?1.263.2 C语言的基本数据类型三三整型数据及其表示整型数据及其表示qint型数的表示范围型数的表示范围:n 定点二进制补码表示定点二进制补码表示n 占占2个字节存储个字节存储n 数的表示范围:数的表示范围:-32768327671.273.2 C语言的基本数据类型三三整型数据及其表示整型数据及其表示q整型数据在使用中应注意以下几个问整型数据在使用中应注意以下几个问题:题:(1)变量要先定义后使用;变量要先定义后使用;(2)数据溢出;数据溢出;(3)常量与变量的类型要匹配。常量与变量
17、的类型要匹配。例:编写求两数和的例:编写求两数和的C程序并上机运行。程程序并上机运行。程序如下:序如下:1.阅读阅读P44中中的几个关于整的几个关于整型数据使用中型数据使用中应注意的几个应注意的几个问题的讨论。问题的讨论。1.283.2 C语言的基本数据类型三三整型数据及其表示整型数据及其表示/*SUM.C源程序源程序*/int main()/*求两数和主函数求两数和主函数*/short int a,b,c;/*说明说明a、b为短整型变量为短整型变量*/a=32767;/*为变量为变量a赋最大值赋最大值*/b=3;/*为变量为变量b赋值赋值*/c=a+b;/*计算计算a+b并将结果赋值给并将结
18、果赋值给变量变量c*/printf(c=%dn,c);/*输出变量输出变量c的值的值*/1.293.2 C语言的基本数据类型四四实型数据及其表示实型数据及其表示1.实数类型实数类型1.实数基本类型表实数基本类型表1.单精度型单精度型2.双精度型双精度型3.长双精度长双精度型型1.303.2 C语言的基本数据类型四四实型数据及其表示实型数据及其表示实型数在计算机中的存放形式实型数在计算机中的存放形式(十进制十进制实型数据实型数据0.12345610-2,这里,这里以十进以十进制表示,计算机中是二进制制表示,计算机中是二进制)1.+0.123456 1.数数符符1.指数符指数符号号1.指指数数1.
19、-21.小小数数1.小数部小数部分分1.指数部指数部分分1.313.2 C语言的基本数据类型四四实型数据及其表示实型数据及其表示q其中,小数部分一般都采用规格化的数据形其中,小数部分一般都采用规格化的数据形式,即:小数点放在第一个有效数字前面,式,即:小数点放在第一个有效数字前面,使小数部分放小于使小数部分放小于1的纯小数。的纯小数。q单精度实数的精度取决于小数部分的单精度实数的精度取决于小数部分的23位二位二进制数位所能表达的数值位数,将其转换为进制数位所能表达的数值位数,将其转换为十进制,最多可表示十进制,最多可表示7位十进制数字,所以位十进制数字,所以单精度实数的有效位是单精度实数的有效
20、位是7位。位。q双精度型用于扩大存储位数,目的是增加实双精度型用于扩大存储位数,目的是增加实数的长度,减少累积误差,改善计算精度数的长度,减少累积误差,改善计算精度1.323.2 C语言的基本数据类型四四实型数据及其表示实型数据及其表示2.实型常量实型常量n两种表示形式两种表示形式n小数:小数:0.123“.”不可省不可省q指数:指数:3e-3e前有数字前有数字,e后是整数后是整数n实型常量只能用十进制表示实型常量只能用十进制表示,不能用不能用八进制和十六进制。都是有符号数。八进制和十六进制。都是有符号数。1.实型数据包括实实型数据包括实型常量和实型变量型常量和实型变量,实型常量一般作,实型常
21、量一般作为双精度来处理。为双精度来处理。要表示单精度或长要表示单精度或长双精度要用双精度要用f(F)或或l(L)1.X1.333.2 C语言的基本数据类型四四实型数据及其表示实型数据及其表示2.实型变量实型变量n实型变量的定义实型变量的定义类型说明符类型说明符 变量名表;变量名表;例:例:float a,b;double c,d;long double e,f;1.343.2 C语言的基本数据类型四四实型数据及其表示实型数据及其表示n实型变量的有关规则:实型变量的有关规则:1.什么是数的范围?什么是有效位?什么是数的范围?什么是有效位?类型说类型说明符明符长度长度数的范围数的范围有效有效数字数
22、字单精度型单精度型float4字节字节-1038 1038 7双精度型双精度型double 8字节字节-10308 10308 151.353.2 C语言的基本数据类型四四实型数据及其表示实型数据及其表示1.2-23=|尾数尾数|=1.1.+-1.&|1.1.1.条件运算条件运算符符1.C语言语言的运算符:的运算符:1.57第3章 数据类型与运算规则数据对象数据对象+运算符运算符表达式表达式 语句语句 函数函数 文件文件 程序程序1.a,b,c,2.A3.3.21.=,+,-2.3.&1.a+b2.c-1.d=a+b;2.c-;1.1.58第3章 数据类型与运算规则 数据与数据类型 C语言的基
23、本数据类型 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换1.593.3 算术运算与赋值运算一一语言中的运算规则语言中的运算规则1.运算分运算分量量1.运算运算符符 1.x=5 +b *c1.对数据进行对数据进行2.运算的符号运算的符号1.被加工被加工2.的数据的数据1.表达表达式式1.+1.=1.在计算机语言中,所有的运算都是照事在计算机语言中,所有的运算都是照事先规定的规则进行的,运算的操作规则,包先规定的规则进行的,运算的操作规则,包括运算符、表达式和运算过程。括运算符、表达式和运算过程。1.603.3 算术运算与赋值运算1.表达式的运算结果称为表达式的
24、表达式的运算结果称为表达式的值值1.C中运算符中运算符1.算术运算符算术运算符2.赋值运算符赋值运算符3.关系运算符关系运算符4.逻辑运算符逻辑运算符5.位运算位运算6.逗号运算符逗号运算符7.条件运算符条件运算符8.1.运算符和运算分量构成运算符和运算分量构成表达式表达式1.613.3 算术运算与赋值运算1.1.学习学习运算符运算符应掌握的要点:应掌握的要点:1.运算符的种类与功能运算符的种类与功能2.运算符与运算分量的关系运算符与运算分量的关系1.个个数数1.类类型型1.A+B1.(ab)?a:b单目运算单目运算双目运算双目运算三目运算三目运算1.关系关系1.不同类型的变量,所占存储不同类
25、型的变量,所占存储空间、数的表示范围、有效位空间、数的表示范围、有效位和允许的操作不同和允许的操作不同1.623.3 算术运算与赋值运算1.a+b-c2.5723.a=b=51.右结合右结合1.左结合左结合1.x=a+b*cq 优先级:运算符的执行顺序优先级:运算符的执行顺序 q 单目运算符的优先级通常高于双目和三单目运算符的优先级通常高于双目和三目运算符目运算符q 结合性:相同优先级的多个运算符的运结合性:相同优先级的多个运算符的运算顺序算顺序q 单目单目/三目运算符三目运算符通常是右结合,通常是右结合,双目运算符通常双目运算符通常是左结合是左结合(赋值运算符除外赋值运算符除外)1.633.
26、3 算术运算与赋值运算1.运算结果运算结果的类型的类型1.整型整型1.逻辑型逻辑型1.x=5+82.a 1001.131.加法运算的结加法运算的结果果1.表达式的表达式的值值即运算结果的值即运算结果的值1.关系运算的结关系运算的结果果1.赋值运算的结果赋值运算的结果?1.01.131.643.3 算术运算与赋值运算二二算术运算符和算术表达式算术运算符和算术表达式1.+加法运加法运算、正值运算算、正值运算2.-减法运减法运算、负值运算算、负值运算 3.*乘法运乘法运算算4./除法运算除法运算5.%求余运求余运算算6.(结合性结合性)1.(12)1.(13)1.653.3 算术运算与赋值运算 例例
27、10/3 11/3 1/2 1./2 10.0/3 10/5*3 10/(5*3)10%39%3-10%310%-3-10%-31.32.33.04.0.55.3.3333336.67.01.12.03.-14.15.-11.663.3 算术运算与赋值运算1.算术表达式算术表达式1.C语言的算术表达式由算术运算语言的算术表达式由算术运算符、常量、变量、函数和圆括号组成,符、常量、变量、函数和圆括号组成,例如:例如:2.3+5 3.12.34-23.65*2 4.-5*(18%4+6)5.x/(67-(12+y)*a)1.673.3 算术运算与赋值运算1.使用算术表达式时应注意:使用算术表达式时
28、应注意:q 双目运算符两侧运算对象的类型必须一致,双目运算符两侧运算对象的类型必须一致,所得结果的类型与运算对象的类型一致。如所得结果的类型与运算对象的类型一致。如果类型不一致,系统将自动按转换规律先对果类型不一致,系统将自动按转换规律先对操作对象进行转换,然后再进行相应的运算。操作对象进行转换,然后再进行相应的运算。q 用括号可以改变表达式的运算顺序,左右括用括号可以改变表达式的运算顺序,左右括号必须配对,多层括号都用圆括号号必须配对,多层括号都用圆括号“()”表表示,运算时先计算内括号中表达式的值,再示,运算时先计算内括号中表达式的值,再计算外括号中表达式的值。计算外括号中表达式的值。1.
29、683.3 算术运算与赋值运算 例:例:1.将下列数学表达式将下列数学表达式:1.写成符合写成符合C语言规则的表达式如下语言规则的表达式如下:2.(a+b+c)/(sqrt(a)+b*(sin(x)+sin(y)+sin(z)sinsin(sinzyxbacba1.其中其中(sqrt(a)和和sin(x)、sin(y)、sin(z)都都是数学函数的引用,表达式中用了三层括号,是数学函数的引用,表达式中用了三层括号,以保证表达式的运算顺序。以保证表达式的运算顺序。1.693.3 算术运算与赋值运算三三自增自减运算自增自减运算1.变量自身加变量自身加(减减)1 优先级优先级(14)1.k=k+11
30、.k+先先使用使用变量变量k的值,的值,k再加再加11.+k k先加先加1,再,再使用使用变量变量k的值的值 1.k=k-11.k-先使用变量先使用变量k 的值,的值,k再减再减11.-k k先减先减1,再使用变量,再使用变量k 的值的值 1.703.3 算术运算与赋值运算1.自增、自减运算符只能用自增、自减运算符只能用于变量,不能用于表达式和常于变量,不能用于表达式和常量量1.1.优先级:高于双目算术运算符优先级:高于双目算术运算符1.1.结合性:从右向左结合性:从右向左1.(k+i)+,-31.1.k=3;printf(“%d”,k+);输出输出3后后,k的值为的值为41.k=3;prin
31、tf(“%d”,+k);1.输出输出4后,后,k的值为的值为41.自增、自减运算自增、自减运算是对变量进行加是对变量进行加1或减或减1操作后再对操作后再对变量赋新的值,表变量赋新的值,表达式和常量不能进达式和常量不能进行赋值操作。行赋值操作。1.k=6;n=-k+;1.n?k?1.713.3 算术运算与赋值运算思考思考int n=6;printf(%d,n=%dn,-n+,n);printf(n=%dn,n);printf(“n=%d,%dn,n,-n+);printf(n=%dn,n);printf(%d,n=%dn,-+n,n);printf(n=%dn,n);1.-6,n=62.n=71
32、.-7,n=62.n=71.n=7,-62.n=71.723.3 算术运算与赋值运算int main()int a,b,s ;a=5;b=5;s=a+b;printf(“%d,%d,%dn”,a,b,s);s=a+b;printf(“%d,%d,%dn”,a,b,s);s=+a+b;printf(“%d,%d,%dn”,a,b,s);s=-a+b;printf(“%d,%d,%dn”,a,b,s);s=a-+b;printf(“%d,%d,%dn”,a,b,s);s=a+b;printf(“%d,%d,%dn”,a,b,s);1.s=a+b 优先级?优先级?1.s=a+b2.s=a+b3.s=
33、a+(+b)1.1.733.3 算术运算与赋值运算1.s=a +b;2.s=a+b;3.s=+a+b;4.s=-a +b;5.s=a-+b;6.s=a +b;7.1.a=5,b=51.5+5=102.5+5=103.7+5=124.6+5=115.6+5=116.5+5=10 1.a b s2.5 5 103.6 5 104.7 5 125.6 5 116.5 5 117.5 5 101.题目分析:题目分析:1.a1.743.3 算术运算与赋值运算int a=2,b=1;a+=+b;b=a+b+;1.k=2;2.i=k+k+;1.k=2;2.i=+k+(+k);1.k=42.i=41.k=42
34、.i=81.a=4,b=21.b=a+b,b+1.a=4,b=71.753.3 算术运算与赋值运算1.main()2.int k=2,i;3.i=(k+)+(k+)+(k+);4.printf(i=%d,k=%dn,i,k);5.k=2;6.i=(+k)+(+k)+(+k);7.printf(i=%d,k=%dn,i,k);8.1.TC1.i=6,k=52.i=15,k=53.i=13,k=51.DC1.763.3 算术运算与赋值运算四四赋值运算符和赋值表达式赋值运算符和赋值表达式1.将一个常量、一个变量将一个常量、一个变量或一个表达式的值赋给一或一个表达式的值赋给一个个变量变量1.x=5 2
35、.y=x+101.1.赋值运算符赋值运算符1.a+b=121.1.a+1=121.1.773.3 算术运算与赋值运算1.可以将一个实型赋给一个整可以将一个实型赋给一个整型型2.也可将一个整型赋给一个实也可将一个整型赋给一个实型型1.类型转换中类型转换中的的“赋值转换赋值转换”1.接受赋值的变量类型决定了运算结果的存储类接受赋值的变量类型决定了运算结果的存储类型型1.int x;x=5.3;x的值为的值为 52.float y;y=5;y的的值为值为 5.0000001.783.3 算术运算与赋值运算1.复合的赋值运算复合的赋值运算1.赋值运算的优先级赋值运算的优先级(2)1.赋值运算的结合性赋
36、值运算的结合性1.比算术运算低,只比逗号运算高比算术运算低,只比逗号运算高1.从右向左从右向左1.x=y=51.x=x+n x+=n1.赋值运算符两赋值运算符两侧出现相同的变侧出现相同的变量量1.int a=b=5;2.int a,b;3.a=b=5;1.1.1.793.3 算术运算与赋值运算1.x=x+n2.x=x-n3.x=x*n4.x=x/n5.x=x%n1.x+=n2.x-=n3.x*=n4.x/=n5.x%=n1.算术运算与算术运算与赋值运算相结赋值运算相结合合1.x与与n均均为整数为整数1.803.3 算术运算与赋值运算q 赋值表达式赋值表达式变量名变量名=表达式表达式求解过程求解
37、过程:(1)先计算右边表达式的值;先计算右边表达式的值;(2)将计算结果赋给左边的变量。将计算结果赋给左边的变量。1.a*=b+51.a=a*b+51.?1.1.a=a*(b+5)1.1.a=b+51.813.3 算术运算与赋值运算赋值表达式的值赋值表达式的值int a,b;a=b=85;if(a=100)if(a=100)1.82第3章 数据类型与运算规则 数据与数据类型 C语言的基本数据类型 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换1.833.4 关系运算与逻辑运算q计算机具有逻辑判断能力,其判断的依据是计计算机具有逻辑判断能力,其判断的依据是计算机
38、内部进行逻辑运算的结果。算机内部进行逻辑运算的结果。C提供了关系提供了关系运算和逻辑运算,用来构造运算和逻辑运算,用来构造C程序控制中的条程序控制中的条件,实现程序的选择结构和循环结构控制。件,实现程序的选择结构和循环结构控制。q关系运算和逻辑运算的结果都是逻辑值,即关系运算和逻辑运算的结果都是逻辑值,即“真真”和和“假假”。C语言中没有专用的逻辑值,语言中没有专用的逻辑值,用整数值用整数值1和和0标识逻辑标识逻辑真真和和假假。在在C语言中,语言中,将将非非0就视为就视为“真真”。1.843.4 关系运算与逻辑运算一一关系运算符与关系表达式关系运算符与关系表达式q 关系运算符关系运算符1.关系
39、运算是一种比较运算,将两个值关系运算是一种比较运算,将两个值(表达式表达式)进行比较,判断比较的结果是否符合给定的条进行比较,判断比较的结果是否符合给定的条件件1.大于大于 ,大于等于大于等于=,小于,小于 ,2.不等不等!=,小于等于小于等于,=,bc1.853.4 关系运算与逻辑运算q 关系表达式关系表达式1.1.关系表达式的结果是一个逻辑值关系表达式的结果是一个逻辑值,2.2.根据关系是否满足分别取真根据关系是否满足分别取真1或假或假01.结果:结果:21.e1 关系运算符关系运算符 e21.100=12.3.5c4.5*18=90 5.(int)2.5!=2.51.int i=1,j=
40、7,a;2.a=i+(j%4!=0)3.a的值?的值?1.1.例例:1.863.4 关系运算与逻辑运算 例:例:int main()float a=1.1,b;b=a/2.0;b=b*2.0;if(b=1.1)printf(“b=an”);else printf(“b!=an”);return 0;1.不要用不要用=判断两判断两个浮点数是否相等,个浮点数是否相等,而是:而是:2.|a b|b)&(xy);2.ab&xy;3.(y|b)&(y|a);4.y|b&y|a;1.例:例:a=5,b=7,c=4,d=32.x=(a+b)(c+d)&(da)1.先先做算术运算,做算术运算,2.再做关系判断
41、,再做关系判断,3.再做逻辑运算,再做逻辑运算,4.将最后结果赋给将最后结果赋给x1.x的值?的值?1.01.e1 逻辑运算符逻辑运算符 e21.任何非零实数任何非零实数均作为逻辑上的均作为逻辑上的11.用逻辑运算符将关系运算用逻辑运算符将关系运算表达式或逻辑量连接起来构表达式或逻辑量连接起来构成逻辑表达式,成逻辑表达式,逻辑表达式逻辑表达式的值是的值是1或或0,表示真或假,表示真或假1.893.4 关系运算与逻辑运算1.43211.从左向右运算从左向右运算(43)逻辑值为逻辑值为12.(12)逻辑值为逻辑值为03.(01)逻辑值为逻辑值为01.整个表达式的值为整个表达式的值为01.例例:1.
42、903.4 关系运算与逻辑运算1.a=1,b=2,c=3,d=4,m=1,n=12.执行执行(m=ab)&(n=cd)之后之后 m=?n=?1.m=0 n=11.例:例:1.在逻辑表达式中,并不是所有的逻辑运算在逻辑表达式中,并不是所有的逻辑运算都必须执行:都必须执行:2.如果如果&的一边已经为的一边已经为0,结果一定为结果一定为 0,&后面的就不做了;后面的就不做了;3.如果如果|的一边已经为的一边已经为 1,结果一定为结果一定为 1,后面的也不做了后面的也不做了1.913.4 关系运算与逻辑运算1.14&472.443.!(23)|!(25)5.(4=7)1.12.03.14.05.11.
43、求表达式的值:求表达式的值:1.921.int main()2.int a=3,b=1,x=2,y=0,s1,s2,s3,s4,s5,s6,s7,s8;s1=(ab)&(xy);s2=ab&xy;s3=(y|b)&(y|a);s4=y|b&y|a;s5=!a|ab;s6=a=10&b&x+;printf(x=%dn,x);s7=a=10|y|x+;printf(x=%dn,x);s8=+a|y&+x;printf(s1=%d,s2=%d,s3=%d,s4=%d,s5=%dn,s1,s2,s3,s4,s5);printf(s6=%d,s7=%d,s8=%dn,s6,s7,s8);printf(x
44、=%d,a=%dn,x,a);3.1.练习练习1.933.4 关系运算与逻辑运算1.练习:用练习:用C语言描述语言描述1.1)a小于小于b或小于或小于c,但,但a和和b都大于都大于d2.2)a和和b中有一个大于中有一个大于c3.3)a是非正整数是非正整数4.4)a是奇数是奇数5.5)a不能被不能被b整除整除6.6)a是是带小数的正数,带小数的正数,b是是带小数的负数带小数的负数1.如何表示闰年如何表示闰年1.能够被能够被4整除同时不能被整除同时不能被100整除整除1.能够被能够被400整除整除1.或或1.943.4 关系运算与逻辑运算三三 条件运算符与条件表达式条件运算符与条件表达式1.例:符
45、号函数例:符号函数sign的数学定义如下:的数学定义如下:1.对应的对应的C函数定义如下:函数定义如下:2.double sign(double x)3.return x0?1:(x=0?0:-1);4.010001)sign(xxxx 1.953.4 关系运算与逻辑运算q 条件运算符条件运算符1.唯一的三目运算符唯一的三目运算符1.e1?e2:e31.判断表达式判断表达式1的值,若为非的值,若为非0(真真),将,将表达式表达式2的值作为整个条件表达式的结的值作为整个条件表达式的结果;否则,将表达式果;否则,将表达式3的值作为整个表的值作为整个表达式的结果达式的结果。1.功能:功能:1.x=(
46、ab)?a:b 2.当当 a=9,b=5时,条件表达式的值为时,条件表达式的值为9,x=91.注意:注意:e2、e3不是都要计算不是都要计算。1.963.4 关系运算与逻辑运算1.高于赋值,低于其它高于赋值,低于其它(3)1.优先级:优先级:1.1.结合性:从右向左结合性:从右向左1.a=5,b=4,c=3,d=22.x=(ab)?a:(ad)?c:d3.x=(ab)?a:(ad)?c:d)4.x=(ab)?a:(ad)?c:d1.数据类型可以不同数据类型可以不同1.1.1.973.4 关系运算与逻辑运算if语句与条件运算的关系语句与条件运算的关系 例:求一个数字的绝对值例:求一个数字的绝对值
47、1.if(y0)2.x=-y;3.else4.x=y;1.(y0)?x=-y:x=y;1.等价等价1.等价等价1.x=(y0)?-y:y;1.说明:说明:if else可以完可以完成与条件运算符成与条件运算符(?:)完完全相同的任务,并且可全相同的任务,并且可以进行相应的转换。以进行相应的转换。1.98第3章 数据类型与运算规则 数据与数据类型 C语言的基本数据类型 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换1.993.5 位运算一一位运算的基本概念位运算的基本概念1.把整型数看作为一个二进把整型数看作为一个二进制序列,按位进行六种运算制序列,按位进行六种
48、运算1.0010 0000 0101 00111.1003.5 位运算二二位运算符位运算符1.运算符运算符含义含义 对象个数对象个数 结合方向结合方向 优先级优先级2.按位求反按位求反单目单目右右(14)3.按位右移按位右移双目双目左左(11)5.&按位与按位与双目双目左左(8)6.|按位或按位或双目双目左左(6)7.按位异或按位异或双目双目左左(7)1.位运算应用于整型数据,即把整型数据看位运算应用于整型数据,即把整型数据看成是固定的二进制序列,然后对这些二进制成是固定的二进制序列,然后对这些二进制序列进行按位运算。序列进行按位运算。1.1013.5 位运算三三按位逻辑运算按位逻辑运算q按位
49、与运算按位与运算&q按位或运算按位或运算|1.a:1010,1001,0101,01112.&b:0110,0000,1111,10111.c:0010,0000,0101,00111.a:1010,1001,0101,01112.|b:0110,0000,1111,10111.c:1110,1001,1111,11111.1023.5 位运算q按位异或运算按位异或运算q按位求反运算按位求反运算1.a:1010,1001,0101,01112.b:0110,0000,1111,10111.c:1100,1001,1010,11001.a:1010,1001,0101,01111.c:0101,
50、0110,1010,10001.1033.5 位运算q按位逻辑运算的应用按位逻辑运算的应用n用用&屏蔽特定位屏蔽特定位(将特定位清为将特定位清为0)n用用&保留特定位保留特定位n用用|将特定位置为将特定位置为1n用用将特定位翻转将特定位翻转1.请课请课后看例后看例题题1.1043.5 位运算1.设设 int x=7,求,求y=x 1.例:例:1.y=x=7=(0000,0000,0000,0111)2.=1111,1111,1111,1000 =-83.对对x的值的值(7)按位求反结果恰为按位求反结果恰为-8的补码表示,的补码表示,其原因是计算机中有:其原因是计算机中有:4.整数求负整数求负=
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。