数据类型运算符与表达式_第1页
数据类型运算符与表达式_第2页
数据类型运算符与表达式_第3页
数据类型运算符与表达式_第4页
数据类型运算符与表达式_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

数据类型运算符与表达式第1页,共45页,2023年,2月20日,星期五&a=2000H22001H&b=2002H1.23452003H2004H2005H举例。若有变量定义inta=2;floatb=1.2345;则变量a、b在内存中的存储情况如图示。“&”表示取地址。第2页,共45页,2023年,2月20日,星期五3.2常量与变量一、常量整型常量:

浮点型常量字符常量字符串常量1)整数十进制八进制十六进制

在程序运行过程中其值不能被改变的量称为常量正负号+数字,开头的数字不能为0数字0+(0~7)组成的数字串数字0x或0X开头+(0~9或A~F)组成的字符串C可识别的三种进制的整数第3页,共45页,2023年,2月20日,星期五二、符号常量概念 符号常量是一种特殊形式的常量,即用一个标识符表示一个常量。定义形式#define常量名常量值符号常量在程序中的应用习惯:符号常量名用大写,变量名用小写。#definePRICE30#includevoidmain(){intnum,total; num=10; total=num*PRICE; printf(“total=%d”,total);}第4页,共45页,2023年,2月20日,星期五

变量的定义变量是程序执行过程中其值可以改变的量。变量名--存储单元--变量值袋子名--袋子位置--袋子东西变量的分类整型变量实型变量字符变量变量的命名(同标识符的命名)变量的使用先定义,后使用

三、变量关于变量第5页,共45页,2023年,2月20日,星期五变量与地址程序中:inti;

floatk;

内存中每个字节有一个编号-----地址…...…...2000200120022005内存02003ik编译或函数调用时为其分配内存单元变量是对程序中数据存储空间的抽象“直接访问”方式:变量名存储单元变量值袋子名袋子位置袋子东西第6页,共45页,2023年,2月20日,星期五

5.标识符预定义标识符

有特定含义的标识符,也可用于其他用途。用户标识符

进行程序设计时用户自己命名的标识符。包括常量、变量、函数名、语句标号、类型定义符等。标识符是由英文字母、数字及下划线构成的字符串,并且首字符必须为字母或下划线。简单的说,标识就是一个名字。建议:变量名的长度不要超过8个字符第7页,共45页,2023年,2月20日,星期五.变量“先定义,后使用”,每个变量被指定为一个确定类型,在编译时就能为其分配相应的存储空间。注:没有字符串变量,用字符数组存放第8页,共45页,2023年,2月20日,星期五3.3整型数据1.整型常量

十进制数如:12、345、0八进制数(以0开头)如:012、045十六进制数(0x开头)如:0x12、0x345整型常量举例2.整型变量的分类基本型(int)短整型(shortint、short)长整型(longint、long)无符号型无符号整型(unsignedint)无符号短整型(unsignedshort)无符号长整型(unsignedlong)整型变量定义第9页,共45页,2023年,2月20日,星期五3、整数数据在内存中的存放方式如:inti;i=10;10i0000000000001010i在内存中实际存储的情况示意图第10页,共45页,2023年,2月20日,星期五4.整型变量定义整型变量的定义形式: 数值类型变量名表;说明:数值类型即int、short、long等。变量名表可为一个或多个变量名。变量被定义后,其取值范围也被确定。注意事项main(){inta,b,c;a=4;b=5;c=a*b;printf(“a*b=%d\n”,c);}等价于:inta;intb;intc;第11页,共45页,2023年,2月20日,星期五5.使用整型数据时的注意事项:

若某系统的C版本确定shortint与int型数据在内存中占据的长度相同,则二者等价。一个int型常量(-32768~+32767)可以赋值给int型变量或long型变量。长整型数的表示方法是在数值后面加字母l或L,如234l,-12323L。不同的数据类型有不同的存储字长,使用时注意其取值范围。注:整型数据的溢出、整型常量的类型的讨论暂不要求第12页,共45页,2023年,2月20日,星期五3.4实型数据实型常量什么是实型常量 即浮点数。以十进制形式表示。实型常量的表示形式小数形式指数形式(科学计数法)使用数值常量时的注意事项实型变量单精度实型(float)双精度实型(double)长双精度实型(longdouble)第13页,共45页,2023年,2月20日,星期五实型常量的指数形式表示:

小数E(或e)整数说明:“小数”表示实数的数值位,即尾数部分。“E”代表十进制数的基数10。“整数”表示10的乘幂。实型常量的指数形式表示法举例:1.23×1033.918e-21.23E33.918×10-2注意:字母E之前必须有数字!第14页,共45页,2023年,2月20日,星期五使用数值常量时的注意事项数值常量内不能有逗号、空格或其他非法字符。数值常量的值不得超过C语言规定的取值范围,否则会产生溢出。相同数值的常量可以在写法上区别它的类型。注:在使用实型数据进行运算时可能会产生一些舍入误差第15页,共45页,2023年,2月20日,星期五3.5字符型数据一、字符常量概念:指用撇号(单引号)括起来的单个字符。字符常量的分类一般字符常量转义字符常量以一个反斜杠“\”开头的字符序列,有特定含义。第16页,共45页,2023年,2月20日,星期五转义字符常量表字符形式功能\b退格(Backspace)\t横向跳格\v竖向跳格\n换行\r回车不换行\f换页\\表示反斜杠\\‘表示‘

(单引号)\ddd用三位八进制数表任意字符(ASCII值)\xhh用两位十六进制数表示任意字符(ASCII值)常用的转义字符第17页,共45页,2023年,2月20日,星期五转义字符的使用main(){printf(“abcd\tg\n”);printf(“Itis\notagoodexample.\n”);}举例:程序执行结果abcdgItisotagoodexample.第18页,共45页,2023年,2月20日,星期五二、字符变量关于字符变量字符变量用来存放字符常量。一个字符变量只能存放一个字符常量。一个字符型变量在内存中占用一个字节的空间。字符变量的定义格式:

char变量名表;字符变量的赋值: 变量名=字符常量;举例:charc;charch1,ch2;c=‘a’;ch1=‘b’;ch2=‘c’;第19页,共45页,2023年,2月20日,星期五三、字符数据的存储及使用

数据在计算机中以二进制形式存放。字符数据在内存单元中存放的是其对应的ASCII码,且一个字符占用一个字节。C语言中允许字符常量像整型数据一样参与相关运算。程序中的应用范例。字符十进制数二进制数‘A’6501000001‘B’6601000010………

…‘Z’9601100000‘a’9701100001‘b’9801100010………

…‘Z’12810000000部分字符ASCII表第20页,共45页,2023年,2月20日,星期五例题main(){charch1,ch2;ch1=‘A’;ch2=ch1+32;printf(“%c\n”,ch2);}main(){charc;inti;c=97;i=‘A’;printf(“%c%d\n”,c,c);printf(“%c%d\n”,i,i);}1、大小写字符的相互转换。2、字符数据与整型数据通用。第21页,共45页,2023年,2月20日,星期五四、字符串常量

概念:字符串常量是指用一对双引号括起来的字符序列。如“Hello”、“good”等。字符串常量的存储:系统自动在字符串的末尾加上一个字符串结束标记‘\0’,以此判断字符串是否结束。程序中长度为n个字符的字符串常量,在内存中需要用n+1个字节空间来存储它。举例:字符串“string”的存储。string\01151161141051101030第22页,共45页,2023年,2月20日,星期五字符常量与字符串常量的区别二者表示形式不同。字符常量的定界符是‘’,而字符串常量的定界符是“”。如:‘a’是字符常量,而“a”是字符串常量。存储空间不同。一个字符常量只占1个字节,而一个含有单个字符的字符串常量需要占用2个字节。如:‘a’在内存中只占1个字节,“a”则需占用2个字节空间。不允许将一个字符串常量赋给一个字符型变量。如:ch=‘a’;是正确的,而ch=“a”;不是将字符a赋值给变量ch。第23页,共45页,2023年,2月20日,星期五3.6变量的初始化变量赋初值C语言允许在定义变量时对变量进行初始化,即对变量赋初值。 如:inta=2;等价于inta;a=2;对变量进行初始化,允许只对定义的变量的一部分赋初值。 如:inta,b,c=25; charch1=‘x’,ch2;C语言中若有几个变量初值相同,必须分别赋值。 如:inta=2,b=2,c=2;对字符型变量初始化时,既可以将字符用单引号括起来直接赋值,也可以使用该字符的ASCII码进行赋值。 如:charch=‘A’;等价于charch=65;第24页,共45页,2023年,2月20日,星期五基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned

int0~65535320~4294967295unsigned

longunsigned

short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255语言程序设计

第三章C第25页,共45页,2023年,2月20日,星期五3.7各类数值型数据间的混合运算不同类型数据间的转换隐式转换显式转换1.隐式转换运算转换赋值转换输出转换函数调用转换运算转换规则:不同类型数据运算时先自动转换成同一类型在不同类型数据混合运算时在把一个值赋给与其类型不同的变量时输出时转换成指定的输出格式实参与形参类型不一致时转换第26页,共45页,2023年,2月20日,星期五doublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换第27页,共45页,2023年,2月20日,星期五2.显式转换(强制转换)一般形式:(类型名)(表达式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3较高类型向较低类型转换时可能发生精度损失问题第28页,共45页,2023年,2月20日,星期五C运算符算术运算符:(+-*/%++--)关系运算符:(<<===>>=!=)逻辑运算符:((!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)3.8算术运算符和算术表达式一.C运算符简介学习运算符应注意:1.运算符功能2.与运算量关系要求运算量个数要求运算量类型3.运算符优先级别4.结合方向5.结果的类型第29页,共45页,2023年,2月20日,星期五二、算术运算符和算术表达式1.基本的算术运算符

+、-、*、/、%

/:两个整数相除的结果为整数。若操作数中有一个负数,则采用“向零取整”的方法。5/3=1;-5/3=-1;两边有一个小数结果为小数.-5/2.0=-2.5

%:模运算符,或称求余运算符。其操作数均应为整数。特别说明:当参加求余运算的2个操作数中有一个为负数时,其结果的符号与第一个数的符号相同。

5%3=2;-5%3=-2;5%(-3)=2;-5%(-3)=-2;第30页,共45页,2023年,2月20日,星期五例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()第31页,共45页,2023年,2月20日,星期五2.算术表达式与运算符的优先级与结合性1)算术表达式:用算术运算符和括号将运算对象连接起来的,符合C语法规则的式子,称为C的算数表达式。2)优先级:先乘除,后加减,例如:a+b*c3)结合性:自左至右,即当一个运算对象两侧的运算符的优先级别相同时,运算对象先与左面的运算符结合,例如:a-b+c第32页,共45页,2023年,2月20日,星期五3.强制类型转换运算符1)利用强制类型转换运算符可以将一个表达式转换成所需要的类型。其通用形式为

(类型名)(表达式)

例如:(double)a、(int)(x+y)、float(5%3)2)注意事项:表达式应用括号括起来在对变量进行强制类型转换时,将得到一个中间结果,该变量的类型保持不变当自动类型转换不能满足要求时,需要采用强制类型转换第33页,共45页,2023年,2月20日,星期五4.自增、自减运算符1)作用:使变量的值增1或减1,具体描述如下:++i、--i(在使用i之前,先使i的值加1或减1)

i++、i--(在使用i之后,再使i的值加1或减1)例如,当i=5时,

k=++i;相当于i=i+1;k=i;则k的值为6,i的值为6。

k=i--;相当于k=i;i=i-1;则k的值为5,i的值为4。注意:(1)++和--只能用于变量,而不能用于常量或表达式。(2)++和--的结合方向为“自右向左”。

第34页,共45页,2023年,2月20日,星期五例1j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;例2-i++i=3;printf(“%d”,-i++);第35页,共45页,2023年,2月20日,星期五例3-i++-(i++)i=3;printf(“%d”,-i++);//-3

例4j+++k;(j++)+k;第36页,共45页,2023年,2月20日,星期五3.9赋值运算符和赋值表达式一、赋值运算符:“=”二、类型转换:当赋值运算符两侧的类型不一致时,需要进行类型转换。1.将实型数据(单、双精度)赋给整型变量时,舍弃实数的小数部分。如:intk=3.78;则k的值为3。2.将整型数据赋值给单、双精度变量时,数值不变,但以浮点数的形式存储到变量中。如:

floatf=10;则f存储的数据为10.00000、

doublef=10;则f存储的数据为10.00000000000000第37页,共45页,2023年,2月20日,星期五3.将一个双精度型数据赋值给单精度变量时,截取其前7位有效数字,存储到单精度变量中。注意:数据表示的范围不能溢出。4.字符型数据赋值给整型变量时,有两种情况:

1)如果系统将字符处理为无符号的量,则直接将字符的8位数值放到整型变量的低8位中,并且高8位补0。

2)如果系统将字符处理为带符号的量,则当字符的最高位为0时,则整型变量的高8位补0;若字符的最高位为1,则整型变量的高8位补1。该方法称为“符号扩展”,其目的是为了保持数据的值不变。第38页,共45页,2023年,2月20日,星期五5.将一个int、short、long型数据赋值给一个字符型变量时,则只将其低8位原样存放到字符变量中。6.将带符号的int数据赋值给long型变量时,要进行符号扩展。反之,若将一个long型数据赋值给一个int型变量时,则只将其低16位原样存放到int变量中。7.将unsignedint数据赋给longint变量时,只需高8位补0即可。当将一个unsigned整型数据赋值给一个与其长度相同的整型变量时,可将unsigned整型数据原样存放到整型变量中,但应注意数据范围超界。第39页,共45页,2023年,2月20日,星期五三、复合的赋值运算符在赋值运算符“=”之前加上一个其他的二元运算符,可以构成一个复合的运算符。例如:a+=b;等价于a=a+b;

x*=y+8;等价于x=x*(y+8);2.作用:1)简化程序

2)提高编译效率第40页,共45页,2023年,2月20日,星期五例2inta=2;

a+=a-=a*=3;

温馨提示

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

评论

0/150

提交评论