书签 分享 收藏 举报 版权申诉 / 99
上传文档赚钱

类型C语言数据类型和玉那算规则课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5100780
  • 上传时间:2023-02-11
  • 格式:PPT
  • 页数:99
  • 大小:858.52KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C语言数据类型和玉那算规则课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言 数据类型 规则 课件
    资源描述:

    1、C语言程序设计教程语言程序设计教程复习n基本概念n什么是算法,如何设计算法?n算法的两要素:n基本功能操作n控制结构n常用算法n枚举法、迭代法、递推法、递归法n算法的特点n有穷性、确定性、有效性、I/On算法的表示n流程图nC语言的发展历程nC语言的特点nC程序的结构规则n函数的基本单元、main函数等n标准库函数nC语言的关键字(32个)nC语言的上机执行过程第三章 数据类型与运算规则n本章要点:n数据与数据类型n基本数据类型及其表示n算术运算与赋值运算n关系运算与逻辑运算n位运算n其它运算n混合运算及数据类型转换3.1 数据与数据类型 n数据数据是程序加工、处理的对象,也是加工的结果。具有

    2、同样性质的数据具有同样性质的数据可被分成一些集合,程序能对它们进行同样的操作、或采用同样的编码等,这样的集合的集合称为数据类型数据类型。n所有的程序语言都是用数据类型来描述程序中的数据结构、数据表示范围、数据在内存中的数据结构、数据表示范围、数据在内存中的存储分配存储分配等。n数据类型是计算机科学的核心概念之一数据类型是计算机科学的核心概念之一。l 常数常数l 变量变量l 运算符运算符l 表达式表达式l 函数函数xaxfsin536.3)(表达式表达式常数常数变量变量函数函数运算符运算符算例n 常数3、5和3.6的存放空间是否相同?n 变量a如何表示?如何存放?n 计算机如何知道3.6和a之间

    3、的关系?n 和 如何输入?如何存放?n 计算机如何识别“=”?运算结果放在哪里?数据的描述数据的描述数据的操作数据的操作53xsin数据是程序处理的对象C语言的数据类型3.2 C语言基本数据类型及其表示 n3.2.1 常量与变量n常量:n在程序运行过程中,其值不能改变的数据称为常量。n常量可以分为直接常量和符号常量,直接常量包括整型常量、实型常量、字符常量和字符串常量,如12,4.6,a,“CHINA”等。n符号常量是指用一个指定的标识符代表某个常量,在程序中需要使用该常量时就可以直接引用标识符。nC语言中用宏定义命令对符号常量进行定义,其定义形式为:#define 标识符 常量n#defin

    4、e PAI 3.1415926n常量并不占内存,在程序运行时直接调入寄存器中。n变量 n在程序运行过程中,其值可以改变的数据称为变量。n变量通过变量名标识,变量名和内存中的存储单元变量名和内存中的存储单元相对应相对应。编写程序时通过变量名来存、取存储单元。nC语言是一种强制定义型语言,变量必须先定义,后使用,定义时必须提供变量的名字和类型。n变量可以分为数值变量、字符变量和指针变量。其中数值变量包括整型变量和实型变量。变量变量memorya82562561212n变量名由字母 A、B、Z、a、b、z,数字 0、1、9 和下划线 _ 组成。n变量名的第一个字符必须是英文字母或下横线。n不能用系统

    5、中的关键字作为变量名n变量名中的字母是区分大小写的。nsum、stu_name、_age、Lts_1_2、a2n32c、x.y、start+9、c2.0 nNAME name 表示两个不同的标识符。n养成良好的命名习惯变量名的规定变量必须先定义后使用变量必须先定义后使用如如:int:int a,b;a,b;a=10;b=a a=10;b=a*12;12;c=a+b;c=a+b;15 1000K变量的变量的3个属性:个属性:变量地址变量地址 变量内容变量内容 变量名变量名3.2.2 整型数据 n整型常量整型常量整型数据包括整型数据包括整型常量整型常量和和整型变量,整型变量,整型数据整型数据以二进

    6、制补码形式存储以二进制补码形式存储 n数据在计算机内存中是以二进制数形式存放的。n实际上,在计算机当中数据是以补码的形式存储的。正数的补码是它本身,负数的补码是其绝对值取反加1。例如-10n原码 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0n绝对值 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0n 取反 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1n 加1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0-10共六种共六种基本整型基本整型短整型短整型长整型长整型无符号整型无符号整型无符号短整型无符号短整型无符号长整型无符号长整型

    7、intintshort intshort int long intlong intunsigned intunsigned intunsigned short unsigned short unsigned longunsigned longl占存储空间占存储空间占内存字节数占内存字节数2 22 24 42 22 24 4整型变量 unsigned int x,y;变量有值吗?变量有值吗?整型变量的定义整型变量的分类 数据类型占用字节 二进制位取值范围int216-3276832767(-215215-1)short216-3276832767long432-21474836482147483

    8、647signed216-3276832767signed short216-3276832767signed long432-21474836482147483647unsigned216065535unsigned short216065535unsigned long43204294967295(0232-1)最大的负数?最大的负数?-2 21515 的补码的补码最大的正数?最大的正数?3.2.3 实型数据 nC语言中实数和实型变量可分为三种类型:n单精度型(float,4字节)n双精度型(double型,8字节)n长双精度型(long double,16字节)。n单精度实型数据的有效数

    9、字是7位,双精度实型数据的有效数字是16位,长双精度实型数据的有效数字是19位。名称 存储字节 表示范围 说明方法 有效位单精度(尾加F)4 -1038-1038 float a;7双精度(尾不加)8 -10308-10308 double a;16长双精度(尾加L)16-104932-104932 long double a;192.2.实型变量实型变量0 11111110 111111111111111111111111-2-23 127-1=1272127 1038与课本与课本46页对比!页对比!n数的范围n数的取值范围是指数的绝对值n有效位n数据在计算机中存储和输出时能够精确表示的数字

    10、位数实型常量的表示方法 1.1.小数形式小数形式(至少有一个小数点和一个数字)(至少有一个小数点和一个数字)0.120.12,.12.12,12.012.0,12.12.2.2.指数形式指数形式(e e前有数字前有数字,e,e后有整数后有整数)1.3451.345 1010-2 -2 1.3451.345 e e-2-2 尾数尾数指数指数 1.2e3,12e-2,1.2e3,12e-2,e2 1.2e 3e1.2 e2 1.2e 3e1.2超出表示范围的数机器如何处理?main()main()float a,b;float a,b;a=0.123e40;a=0.123e40;b=0.123e-

    11、40;b=0.123e-40;c=12345.6789;c=12345.6789;printf(a printf(a=%e,b=%en,a,b);=%e,b=%en,a,b);printf(%fn,1.234);printf(%fn,1.234);printf(%fn,c printf(%fn,c););printf(%fn,1111111111.2222222222fprintf(%fn,1111111111.2222222222f +1111111111.2222222222f);+1111111111.2222222222f);printf printf(%fn,1.123456789)

    12、;(%fn,1.123456789);getch getch();();2020位位 上溢上溢 下溢为下溢为0 06位小数位小数16位有效数位有效数7位有效数位有效数6位小数位小数3.2.4 字符型数据 n将一个字符常量放到一个字符变量中,实际上并不是将该字符本身放到相应变量的内存单元中,而是将该字符的相应的将该字符的相应的ASCII码放码放到相应的存储单元中到相应的存储单元中。n字符型数据包括字符型常量和字符型变量字符型数据包括字符型常量和字符型变量。n字符型常量又被称为字符常数。C语言中字符型常量是用单引号括起来的一个字符,如a,A。由于C语言对字母的大小写是敏大小写是敏感的感的,因此a和

    13、A是不同的字符型常量。字符型常量 n在此有两点需要注意:n字符型常量使用单引号作为标识。n字符型常量只能包含一个字符。a,A,1a,A,1abcabc、“a”a”l定义形式定义形式 charl占存储空间占存储空间 一个变量一个变量一个字符变量只一个字符变量只能包含一个字符能包含一个字符Main()Main()char c ;char c ;c=c;c=c;printfprintf(“%c”,c);(“%c”,c);运行结果:运行结果:c c题目中有几个题目中有几个c c,哪些是等价的?哪些是等价的?字符型变量aa的的ASCIIASCII值值为为9797 内存中存储形式内存中存储形式0 1 1

    14、0 0 0 0 1a、A、1字符串常量字符串常量n n个字符组成的字符串常量个字符组成的字符串常量,在在内存中占空间为内存中占空间为 n+1 n+1 个字节个字节c ch hi in na a00字符串结束标记字符串结束标记“空空”字符字符“a”a”串串长长 1 1“This is C string”“This is C string”串长串长1616 “”“”(空格)空格)串长串长1 1 “”“”(不含空格)不含空格)串长串长0 0C C 中没有专用中没有专用的字符串变量的字符串变量n对于不可显示字符,C语言提供的另一种字符型常量是转义字符常量。转义字符常量是以“”开头的字符常量,它通知编译

    15、器需要用特殊的方式处理“”后的字符,将“”后的字符转换成另外的意义。nn 换行 t 水平跳格nb 退格 r 回车nf 走纸换页 反斜杠n 单引号字符 ”双引号字符nddd ddd表示1到3位八进制数字nxhh hh表示1到2位十六进制数字n例:n60是十进制数48,代表ASCII码字符0n105是十进制数69,代表ASCII码字符En015是十进制数13,代表ASCII码字符回车nx1f是十进制数31,代表ASCII码字符nx61是十进制数97,代表ASCII码字符amain()char a,b,c;int d;a=5;b=60;c=A;d=1089;printf(a=%c b=%c c=%d

    16、 d=%cn,a,b,c,d);printf(“a=%d b=%dn,a,b);getch();按整数输出按整数输出C C按字符输出按字符输出D D 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1d d65650 0 1 1 0 0 0 0b=60b=60在计算机中的存储在计算机中的存储按字符和按字符和整数输出整数输出a a*字符串字符串 “w11”w11”占几个字节占几个字节?转义字符转义字符字符串结束标记字符串结束标记 w 11 w 11 *字符串字符串 “w 110good”w 110good”占几个字节占几个字节?指针型数据及其表示 nC语言定义了一种新的数据类型指针类

    17、型,它是一个变量在内存中所对应的存储单元的地址。用来存放指针的变量称为指针变量。n高级语言中的变量具有三个属性n变量名n变量的值n变量的地址访问内存的两种方式:访问内存的两种方式:n直接访问:按地址直接存取直接访问:按地址直接存取&a an间接访问:通过指针间接访问:通过指针p p间接存取间接存取100010061002102310a bc3.551000p对于对于intint a=10,c=5;a=10,c=5;float b=3.5;float b=3.5;内存分配内存分配a的地址的地址存储变量存储变量2字节字节a的内容的内容指针指针a的地址的地址a a是整型变量,存放内容是整型变量,存放

    18、内容p p是指针变量,存放地址是指针变量,存放地址n*指针运算符n&取地址运算符。n例如:nint a;nint*p;n则&a为变量a的地址,*p为指针变量p所指向的存储单元所存储的内容。例:例:intint a=10,a=10,*p,x;p,x;float b=3.5,float b=3.5,*p1;p1;char c,char c,*p2=&cp2=&c;p=&a;p1=&b;p=&a;p1=&b;x=x=*p;p;*p=ap=a定义:定义:类型说明符类型说明符 *指针变量名指针变量名指针运算指针运算*p p*p p定义指针变量定义指针变量指针初始化指针初始化指针赋值指针赋值指针变量的定义

    19、与赋值类型说明符用来指定该指针变量指向的变量的类型,而并非指针的类型。C语言允许指针指向任何类型的对象,包括别的指针。*-指针运算符指针运算符&-&-取地址运算符取地址运算符同级,右结合同级,右结合n指针变量的赋值指针变量的赋值intint a=3,a=3,*p,p,*p1,p1,*p2,p2,*p3,p4;p3,p4;p=&a;/p=&a;/*取取a a地址运算地址运算*/p1=p;/p1=p;/*直接赋值直接赋值*/p2=MULL;/p2=MULL;/*赋空值,不指向任何变量赋空值,不指向任何变量*/P3=0;P3=0;p4=0;p4=0;n指针变量的操作指针变量的操作 intint a=

    20、3,a=3,*p,p,*p1,k;p1,k;p=&a;p=&a;/*a a地址地址P P*/k=k=*P;P;/*3 3k k*/*p=20;p=20;/*20 20a a*/*&a=30;&a=30;/*先取先取a a的地址,再按地址赋值的地址,再按地址赋值3030a a*/p1=&p1=&*p;p;/*因为因为&*p=&ap=&a,操作结果使操作结果使p1p1指向指向a a*/问题问题1:int*i;float*p1;指针变量指针变量i中只能中只能指向指向整型变量?整型变量?指针变量指针变量p1中只能中只能指向指向实型变量?实型变量?问题问题2 2:指针变量能指向常数吗?:指针变量能指向常

    21、数吗?指针的应用在第十章介绍指针的应用在第十章介绍变量初始化 nC语言允许变量初始化具有两种形式:一一种是先声明后赋值,种是先声明后赋值,另一种是在定义变另一种是在定义变量的同时对该变量进行初始化量的同时对该变量进行初始化。nint a=3;nint a,b,c=5;n初始化不是在编译时进行初始化不是在编译时进行(外部变量和静外部变量和静态变量除外态变量除外),而是在程序运行时完成的。,而是在程序运行时完成的。3.3 算术运算和赋值运算 n运算符是用于描述对数据进行运算的特殊符号。nC语言的运算符按其在表达式中与运算对象的关系可以分为:n单目运算符n双目运算符n三目运算符。运算分量运算分量对数

    22、据进行对数据进行运算的符号运算的符号被加工被加工的数据的数据表达式表达式运算符运算符 X=5 +b *cC语言中的运算符和表达式表达式的运算结果称为表达式的表达式的运算结果称为表达式的值值l学习运算符应掌握的要点学习运算符应掌握的要点l 运算符的种类与功能运算符的种类与功能l 运算符与运算分量的关系运算符与运算分量的关系个数个数类型类型A+B(ab)?a:b目目不同类型的变量不同类型的变量,所占存储所占存储空间、数的表示范围、有空间、数的表示范围、有效位和允许的操作不同效位和允许的操作不同单目运算单目运算双目运算双目运算三目运算三目运算n按照运算符在表达式中所起的作用,运算符可以分为:n1 算

    23、术运算符n2 自增自减运算符n3 赋值运算符与复合赋值运算符n4 关系运算符n5 逻辑运算符n6 位运算符n7 条件运算符n8 逗号运算符 优先级与结合性nC语言中的运算符具有一般数学运算符的特性,即具有优先级和结合性:n优先级是指同一个表达式中不同优先级的运算符进行计算时的先后次序。n结合性是针对同一优先级的多个运算符而言的,它是指同一个表达式中相同优先级的多个运算符应遵循的运算顺序。l优先级优先级:运算符的执行顺序运算符的执行顺序 l结合性结合性:相同优先级的多个运算符的运算顺序相同优先级的多个运算符的运算顺序l运算结果的类型运算结果的类型X=5+8a100X=a+b*ca+b-c572a

    24、=b=5 自左向右自左向右 自右向左自右向左 整型整型 逻辑型逻辑型130参考课本:参考课本:P366 算术运算符与算术表达式 nC语言基本算术运算符包括加、减、乘、除/以及求模(求余)%运算符。n“”和“”运算符既具有单目运算符的取正值运算和取负值运算的功能,又具有双目运算的功能。作为单目运算符使用时其优先级高于双目运算符。n求模运算符的作用是求整数除法的余数,要求两侧都应该是整型数据,不能作用于实型数据。n两个整数相除的结果是整数,如5/3的结果为1,小数部分被舍去。3 3 3 30 00.5000000.5000003.3333333.3333336 6 0 01 10 0-1-11 1

    25、-1-1 商商-3-3余余-1-1n10/3 值是n11/3 值是n1/2 值是n1./2 值是 n10.0/3 值是n10/5*3 值是n10/(5*3)值是 n10%3 值是 n9%3 值是 n10%3 值是 n10%3 值是n-10%3 值是 自增、自减运算符 n自增、自减运算符既可以放在操作数之前,也可以放在操作数之后,这两种写法是有差别的。n如果自增、自减运算符放在操作数前面,则在表达式引用该操作数之前,先对其作加1或减1运算。n如果自增、自减运算符在操作数之后,则表达式先引用该操作数,然后再对其加1或减1运算。n例如:int x=10;y=+x;printf(“%d,%d”,x,y

    26、);n Output:11,11n int x=10;y=x+;printf(“%d,%d”,x,y);n Output:11,10 注意:n自增、自减运算符只能用于变量,而不能作用于常量或表达式,例如5+和(a+b)+都是不合法的。n自增、自减运算符作为单目运算符,它的优先级高于所有双目运算符。自增、自减运算符的结合方向是“自右向左”。例如:n用于用于+,-运算的变量只能是整型、字符型运算的变量只能是整型、字符型和指针型变量。和指针型变量。main()main()intint a,b,s ;a,b,s ;a=5;b=5;a=5;b=5;s=a+b;s=a+b;printf(“%d,%d,%d

    27、n”,a,b,sprintf(“%d,%d,%dn”,a,b,s););s=a+b;s=a+b;printf(“%d,%d,%dn”,a,b,sprintf(“%d,%d,%dn”,a,b,s););s=+a+b;s=+a+b;printf(“%d,%d,%dn”,a,b,sprintf(“%d,%d,%dn”,a,b,s););s=-a+b;s=-a+b;printf(“%d,%d,%dn”,a,b,sprintf(“%d,%d,%dn”,a,b,s););s=a-+b;s=a-+b;printf(“%d,%d,%dn”,a,b,sprintf(“%d,%d,%dn”,a,b,s););s=

    28、a+b;s=a+b;printf(“%d,%d,%dn”,a,b,sprintf(“%d,%d,%dn”,a,b,s););s=a +b;s=a+b;s=+a+b;s=-a +b;s=a-+b;s=a +b;a=5,b=55+5=105+5=107+5=126+5=116+5=115+5=10 a b s5 5 106 5 107 5 126 5 115 5 115 5 10i=2;k=i+i+i+;i=2;k=(+i)+(+i)+(+i);自增之自增之后再相后再相加加i=2printf(%d,(i+i+i+);printf(%d,(+i+i+i);n已知:i=3;n1.执行 printf(“

    29、%d”,i+);nOutput:3 i的值为4n2.执行 printf(“%d”,+i);nOutput:4 i的值为4四四.赋值运算符赋值运算符将一个常量或一个表达式的值赋给一个变量将一个常量或一个表达式的值赋给一个变量格式:格式:变量名表达式变量名表达式x=5 y=x+10赋值运算符和赋值表达式 n赋值运算符构成了C语言最基本、最常用的赋值语句。C语言中赋值运算符用“”表示,其功能是计算赋值运算符右边的表达式的值,并将计算结果赋给“”左边的变量。n在对赋值表达式求解过程中,如果赋值运算符两侧的数据的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。可以将一个实型赋给一个整型可以将

    30、一个实型赋给一个整型也可将一个整型赋给一个实型也可将一个整型赋给一个实型int x,x=5.3;x的值为的值为 5float y,y=5;y的的值为值为 5.000000赋值类型转换赋值类型转换接受赋值的变量类型决定了运算结果的类型接受赋值的变量类型决定了运算结果的类型n将实型数据赋给整型变量时,舍弃实数的小数部分舍弃实数的小数部分。n将整型数据赋给实型变量时,数值保持不变,但以浮点数形式存储到变量中。n将一个double型数据赋给float型变量时,截取其前面7位有效数字,存放到float型变量的存储单元中。但应注意数值范围不能溢出。n将一个float型数据赋给double型变量时,数值不变

    31、,有效位数扩展到16位,在内存中以64位存储。n字符型数据赋给整型变量时,将字符数据放入整型变量的低8位中。此时有两种情况:n对无符号型变量赋值,则将字符的8位放入整型变量的低8位,高8位补0。n对有符号型变量赋值,若字符最高位为0,则整型变量的高8位补0,若字符最高位为1,则高8位全补1。这种方法称为“符号扩展”,这样做的目的是使数值保持不变。n将一个int型变量赋给一个char型变量时,只将其低8位原封不动地送到char型变量中。n将带符号的整型数据(int型)赋给long型变量时,要进行符号扩展。将int型数据的16位送入long型变量的低16位中,如果int型数据为正数,则long型变

    32、量的高16位补0,如果int型数据为负数,则long变量的高16位补1,以保持数值不改变。n若将一个long型数据赋给一个int型变量,只需将long型数据中的低16位原封不动地送到整型变量中。n将unsigned int型数据赋给long int型变量时,不存在符号扩展问题,只需将高16位补0即可。n将一个unsigned型数据赋给一个占字节数相同的int型变量,可将unsigned型数据原样送到int型变量中,但如果数据范围超过相应整数的表示范围,则会出现数据溢出。n将无符号型数据赋给长度相同的有符号型变量时,数据原样照赋。强制类型转换运算符 nC语言在处理两种不同数据类型的数据进行运算时

    33、,系统会自动地将两个操作数作适当的类型转换后再进行运算。这种数据类型的转换时按照系统默认的规则由低级类型向高级类型转换的。nC语言规定也可以利用强制类型转换运算符将一个表达式的值转换成所需类型。n强制类型转换运算符的一般形式为n(类型名)(表达式)n注意:在强制类型转换运算符中,表达式应该用括号括起来,以表示将整个表达式的值进行强制类型转换。例如n (int)x+y;n 则只表示将x转换成整型,然后与y相加。n需要说明的一点是在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型并未发生变化。例如n int i;n float x=3.6;n i=(int)x;n printf(“x=%

    34、f,i=%d”,x,i);n 输出:x=3.6,i=3思考题?nmain()nn int a=32767,b=3;n long c;n c=a+b;n printf(c=%ld,c);n getchar();nnOutput:32770?-32766?c=(long)a+b;或 c=(long)(a+b);x=x+nx=x-nx=x*nx=x/nx=x%nx+=nx-=nx*=nx/=nx%=n算术运算与赋值运算相结合算术运算与赋值运算相结合复合赋值运算符和复合赋值表达式main()int a,b,c,d,e;a=2,b=5,c=6,d=10;a+=b;b-=c;c*=d;d/=a;a%=c;

    35、printf(“%d,%d,%d,%d,%dn”,a,b,c,d,a);Output:7,-1,60,1,7 注意:注意:如果复合赋值运算符的右侧是包含若干项的如果复合赋值运算符的右侧是包含若干项的表达式,则右侧的表达式相当于一个整体。表达式,则右侧的表达式相当于一个整体。如:如:x*=y+8 x=x*(y+8)3.4 关系运算与逻辑运算 n所谓“关系运算”实际上是“逻辑比较运算”,将两个数据进行比较,判断其比较结果是否符合给定的条件。大于大于 ,大于等于大于等于=,小于,小于 ,不等不等!=,小于等于小于等于 b=c的值为真,表达式的值为1。l关系符与运算分量构成关系表达式关系符与运算分量构

    36、成关系表达式l关系表达式的结果是一个逻辑值,关系表达式的结果是一个逻辑值,根据关系是否满足,分别取真或假。根据关系是否满足,分别取真或假。int i=1,j=7,a;a=i+(j%4!=0)a的值?的值?结果:结果:a=2结合性:结合性:从左向右从左向右abce1关系运算符关系运算符 e2 算术式算术式100=13.5c5*18=90 (int)2.5!=2.5逻辑运算符和逻辑表达式 n逻辑运算符是表述表达式之间的逻辑关系的一种运算符。n“!”是单目运算符,“&”,“|”是双目运算符。“!”的优先级高于“&”,“&”的优先级高于“|”,并且“!”优先级高于算术运算符,“&”和“|”优先级低于关

    37、系运算符。n“!”结合性为从右向左,“&”和“|”的结合性为从左向右。1.1.运算符运算符&(与与):两边为两边为1,结果为,结果为1|(或或):两边有一个为:两边有一个为1,结果为,结果为1!(非非):非:非1为为0,非,非0为为12.优先级:优先级:!的优先级高于!的优先级高于&和和|3.结合性:结合性:与和或是左结合,非是右结合与和或是左结合,非是右结合五、逻辑表达式五、逻辑表达式用逻辑运算符将关系运算表达式或逻辑量用逻辑运算符将关系运算表达式或逻辑量连接起来构成逻辑表达式连接起来构成逻辑表达式(ab)&(xy);ab&xy;(y|b)&(y|a);y|b&y|a;e1逻辑运算符逻辑运算

    38、符 e2任何非零实数均作为逻辑上的任何非零实数均作为逻辑上的1 1例:例:a=5,b=7,c=4,d=3x=(a+b)(c+d)&(da)先先做算术运算,做算术运算,再做关系判断,再做关系判断,将最后结果赋给将最后结果赋给x xl逻辑表达式的值是逻辑表达式的值是1 1或或0 0,表示真或假,表示真或假 在逻辑表达式中,并不是所有的逻辑运算在逻辑表达式中,并不是所有的逻辑运算都必须执行。都必须执行。l如果如果&的一边已经为的一边已经为0 0,结果一定为结果一定为 0 0l如果如果|的一边已经为的一边已经为 1 1,结果一定为结果一定为 1 1a&b&ca&b&c a a非非0 0时再判断时再判断

    39、b,ab,a,b b均非均非0 0再判断再判断c ca|b|ca|b|ca a为非为非0 0,不必判断,不必判断b b和和c c,结果一定为,结果一定为1 1 已知已知:a=1,b=2,c=3,d=4,m=1,n=1执行执行(m=ab)&(n=cd)之后之后 m=?n=?由于由于 ab的值为的值为 0,&的结果一定为的结果一定为0,即,即 m=0(n=cd)不再运算,不再运算,n维持原有的值,即维持原有的值,即 n=114&4717!(23)|!(25)(4=7)10001求表达式的值:求表达式的值:用用C语言描述语言描述1)a小于小于b或小于或小于c2但但a和和b都大于都大于c3)a和和b中

    40、有一个大于中有一个大于c4)a是非正整数是非正整数5)a是奇数是奇数6)a不能被不能被b整除整除7)a是是带小数的正数,带小数的正数,b是是带小数的负数带小数的负数如何表示闰年如何表示闰年能够被能够被4整除同时不能被整除同时不能被100整除整除能够被能够被400整除整除 条件运算符与条件表达式 n条件运算符是C语言中唯一的三目运算符,其形式为:n表达式1?表达式2:表达式3n条件运算符的功能是:先计算表达式1的值,若其值为非0值,即逻辑真值,则计算表达式2的值,并将表达式2的值作为整个条件表达式的结果,若表达式1的值为0,即逻辑假值,则计算表达式3的值,并将表达式3的值作为整个条件表达式的结果

    41、。3.5 位运算n数据在计算机中是以二进制代码的形式表示的,每一个二进制数称为一位。C语言的主要设计目的是为描述系统而设计的,因此C语言特别提供了对二进制位的操作功能,称为位运算。n在此需要说明的一点是:位运算符的运算对象只能是整型或字符型的数据。nC语言提供了6种基本位运算,见P66表39。运算符运算符含义含义对象个数对象个数结合方向结合方向优先级优先级按位求反单目自右向左1按位右移双目自左向右2&按位与双目自左向右3|按位或双目自左向右4按位异或双目自左向右5按按位与运算位与运算 a:1010,1001,0101,0111&b:0110,0000,1111,1011 c:0010,0000

    42、,0101,0011按按位或运算位或运算 a:1010,1001,0101,0111|b:0110,0000,1111,1011 c:1110,1001,1111,1111按按位异或运算位异或运算 a:1010,1001,0101,0111&b:0110,0000,1111,1011 c:1100,1001,1010,1100n按位与运算具有一些特殊的用途:n清零。如果想将一个整数的个别位清零,则只要找到一个二进制数,其相应位的值位0,然后使两个数进行按位与运算,即可达到清零的目的。n取一个数中的某些指定位,只需要将其与一个相应位的值为1的整数进行按位与运算即可。n按位或运算具有的一些特殊的用

    43、途:n按位或运算常用来对一个数据的某些位置1。只需要将这个数与一个相应位为1的整数进行按位或运算即可。n按位异或运算具有的一些特殊的用途:n使特定位翻转:如果想使变量a的低四位翻转,即0变为1,1变为0,可以将它与00001111进行按位异或运算。要使哪几位翻转就将与其进行位异或运算的整数的该几位置1即可。n与0相异或,保留原值n按位取反运算()n按位取反运算规则是将二进制数按位取反,即将0变成1,将1变成0。n左移运算符n左移运算符用来将一个数的各二进制位全部左移若干位。例如a2。n高位左移后溢出,舍去不起作用,右边补0。n左移n位相当于该整数乘以2n,例如152。移到右端的低位被舍弃,对无

    44、符号数,高位补0。对于有符号数,如果原来符号位为0(该数为正),则左侧移入0;如果原来的符号位为1(即该数为负),则左侧移入1。n右移一位相当于除以2,右移n位相当于除以2n。移移位运算位运算 a:1101,0011 b=a2:0001,00113.6 其他运算符n逗号运算符和逗号表达式n逗号运算符用于将多个表达式连接在一起构成逗号表达式,逗号运算符又称为“顺序求值运算符”,逗号表达式的一般形式为n表达式1,表达式2,表达式nn逗号表达式的求解过程是:先求解表达式1的值,再求解表达式2的值,从左向右依次求解各表达式的值,最后求得表达式n的值,整个逗号表达式的值就是表达式n的值。n逗号运算符的优

    45、先级最低,优先级为15(表达式表达式 1,表达式表达式 2,表达式表达式 3,表达式表达式 n)逗号表达式的值为最后一个逗号表达式的值为最后一个表达式的值表达式的值(表达式表达式n n的值的值)X=(a=4*5,a*2),a+6)a为为?x为为?“.”和“-”运算符n“.”和“-”运算符的作用是引用构造数据类型的结构和联合中的分量。n优先级最高n结合性自左向右结构变量名.成员结构指针变量名-成员形式:()和运算符n优先级最高,结合性是自左向右n()的作用:n改变运算次序n函数参数表n强制类型转换或sizeof运算n的作用:n数组的说明n数组元素的下标表示n“*”和“&”运算符n“*”指针运算符

    46、,访问指针所指向的内容n“&”地址运算符,取指定变量的地址n(type)运算符n强制类型转换运算符,将右边表达式的值转换为括号中指定的数据类型nsizeof(opr)运算符n求出运算对象在计算机内存中所占用的字节数量nopr为表达式或数据类型名,是表达式时括号可省略 (),.,-(),.,-,!,!,+,-,-,&,+,-,-,&,*,(,(类型类型),sizeof),sizeof(右结合右结合)*,/,%,/,%+,-+,-,=,=,!=,!=&|&|?:(?:(右结合右结合)=(+=,-=,.)(=(+=,-=,.)(右结合右结合),高高 算术运算符算术运算符关系运算符关系运算符逻辑运算符

    47、逻辑运算符移位运算符移位运算符位运算符位运算符运算符优先级、结合性小结运算符优先级、结合性小结3.7 混合运算与数据类型转换将不同数据类型先转换成将不同数据类型先转换成同一类型同一类型,然后进行运算。然后进行运算。自动进行自动进行-隐式转换隐式转换强制进行强制进行-显式转换显式转换隐式转换(算术转换)隐式转换(算术转换)优先级低的向优先级高的转换优先级低的向优先级高的转换已知:int i;long e;float f;douible d;f=10+a+i*f-d/e 强制类型转换强制类型转换(类型标识符)(类型标识符)表达式表达式(intint)(10+a+i10+a+i*f-d/ef-d/e)将该结果强制将该结果强制转换为整型转换为整型本章作业n第3章,P75n选择题:1,6,10,14,15,17,18,25,26,27

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C语言数据类型和玉那算规则课件.ppt
    链接地址:https://www.163wenku.com/p-5100780.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库