数据类型运算符和表达式.pptx
《数据类型运算符和表达式.pptx》由会员分享,可在线阅读,更多相关《数据类型运算符和表达式.pptx(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、内容提要内容提要基本数据类型;常量和变量;标识符命名;常用运算符和表达式;运算符的优先级与结合性第1页/共105页Hello,WorldHello,World#include main()printf(hello,worldn);超级无敌考考你:如何把“hello”和“world”分别打印在两行?第2页/共105页例:一个简单的例:一个简单的C C程序例子程序例子#include/*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值:整型数a和b之和*/int Add(int a,int b)return(a+b);/*主函数*/main()int x,y,sum=0;print
2、f(Input two integers:);scanf(%d%d,&x,&y);/*输入两个整型数x和y*/sum=Add(x,y);/*调用函数Add计算x和y相加之和*/printf(sum=%dn,sum);/*输出x和y相加之和*/并列的两个函数并列的两个函数其中一个是其中一个是程序的入口程序的入口程序注释程序注释第3页/共105页C C程序常见符号分类程序常见符号分类 关键字(Keyword)又称为保留字,C语言中预先规定的具有固定含义的一些单词数据类型修饰符int,控制语句return等标识符(Identifier)系统预定义标识符,main,printf 等用户自定义标识符,A
3、dd,x,y等运算符(Operator)34种,详见附录2分隔符(Separator)空格、回车/换行、逗号等其它符号大花括号“”和“”通常用于标识函数体或者一个语句块“/*”和“*/”是程序注释所需的定界符数据(Data)变量(Variable)常量(Constant)第4页/共105页标识符命名标识符命名 作用是用来给变量、函数、类型等起名字的,以便于区分。定义是以字母或下划线开头,后跟若干字母、下划线或数字。大小写敏感正确:abc_abca11a12_a12ABC_23AbcA_2不正确:232ANo.A-2第5页/共105页标识符命名标识符命名 直观,见名知意,便于记忆和阅读SUM、M
4、AX、NODE最好使用英文单词或其组合切忌使用汉语拼音下划线和大小写通常用来增强可读性variablenamevariable_namevariableName不允许使用关键字作为标识符的名字int,float,for,while,if等某些功能的变量采用习惯命名如:for语句所采用的循环变量习惯用i,j,kWindows Windows 风格风格UNIX UNIX 风格风格第6页/共105页基本基本基本基本数据类型数据类型数据类型数据类型数据为什数据为什么有类型么有类型之分?之分?在程序中要处理大量的数在程序中要处理大量的数据,对于数据来说,它们有着据,对于数据来说,它们有着某些相同的属性,
5、某些相同的属性,处理规律相处理规律相同,存储格式、取值范围也相同,存储格式、取值范围也相同。同。我们将具有相同属性的数我们将具有相同属性的数据称为一类,即据称为一类,即数据类型数据类型,符,符合计算机中数据的存储方式。合计算机中数据的存储方式。学习任何语言学习任何语言,首先要学习其数据类型首先要学习其数据类型.C C语言有丰富的数据类型语言有丰富的数据类型,可以表达复杂的数据结构可以表达复杂的数据结构第7页/共105页数据类型(数据类型(Data TypeData Type)数据类型基本类型构造类型指针类型空类型整型实型(浮点型)字符型枚举类型数组类型结构体类型共用体类型单精度实型双精度实型基
6、本整型长整型短整型无符号整型第8页/共105页b,B,KB,MB,GB,TBb,B,KB,MB,GB,TB如何衡量数据类型所占空间大小?bit,中文叫法:位Byte,中文叫法:字节Kilobyte(KB),中文叫法:KMegabyte(MB),中文叫法:兆Gigabyte(GB),中文叫法:GTerabyte(TB),中文叫法:T1 TB 1 TB=1,024 GB1,024 GB1 GB1 GB =1,024 MB1,024 MB1 MB1 MB =1,024 KB1,024 KB1 KB1 KB =1,024 B1,024 B1 B 1 B=8 b8 b第9页/共105页b,B,KB,MB
7、,GB,TBb,B,KB,MB,GB,TB一个位有多大?只能是“0”或者“1”,这叫二进制一个字节有多大?保存一个字符(英文字母、数字、符号)ASCII(美国标准信息交换码)编码见P427附录D,常用字符与ASCII码对照表两个字节保存一个汉字GB编码可以表示0255之间的整数第10页/共105页基本数据类型基本数据类型int整数,在目前绝大多数机器上占4个字节。TC2中是2个字节VC中是4个字节float单精度浮点数,一般是4个字节长double双精度浮点数,一般是8个字节长char字符,一般是1个字节长用来表示256个ASCII字符,或者0255的整数第11页/共105页数据类型修饰符数据
8、类型修饰符shortshort int,短整数,一般2个字节长。通常简写为shortlonglong int,长整数,一般是4个字节长。通常简写为longlong double,长双精度(高精度)浮点数,一般是10个字节长。signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)第12页/共105页何谓类型溢出何谓类型溢出(OverflowOverflow)?)?C语言直接提供的任何类型都有取值范围。当
9、向其赋超过此范围的数值,就会产生数值溢出,得到一个不正确的结果。vc中int的范围是-231231-1如果超出取值范围,给它一个小于-231或者大于231的数会如何呢?小蛇能吞下小蛇能吞下大象吗?大象吗?第13页/共105页溢出(溢出(OverflowOverflow)造成的危害)造成的危害一台安装了Windows95/98的机器,如果连续运行天没有重新启动,可能死机原因:Windows自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个unsignedlong 类型的变量unsignedlong的最大值是:4294967295一天有24*60*60*1000=8640000
10、0毫秒当天的时候,此计数器会溢出,引起死机第14页/共105页何谓类型溢出何谓类型溢出(OverflowOverflow)?)?生活中的例子:身份证号码中的出生年阿利亚娜号火箭发射失败现象与危害:溢出后的数值是可预料的,但不同平台会有所不同。当程序从高位计算机向低位计算机移植(比如从64位系统移植到32位系统)时,以前从不出现的溢出问题可能出现。第15页/共105页类型溢出的解决方案类型溢出的解决方案?解决方案:预先估算运算结果的可能范围,采用取值范围更大的类型。1+2+3+1!+2!+3!+13+23+33+如果不需要处理负数,则采用无符号类型。在运算还没开始之前就判断运算数是否在合理的取值
11、范围内。如果超出,则停止运算,转错误处理。第16页/共105页基本数据类型基本数据类型基本数据类型基本数据类型常量变量 在计算机中存储的数据,按存储的性质分,可分为:第17页/共105页常量(常量(ConstantConstant)整型常量18、-31long int型常量123l、123L、123456l、123456Lunsigned int型常量123u、123U浮点常量十进制小数形式、指数形式1e-2、float型常量、1e-2f、long double型常量、缺省为double因为字母l和数字1容易混淆,所以当用l做后缀时,常使用大写形式第18页/共105页八进制与十六进制常量八进制
12、与十六进制常量以数字“0”开始的整型常数是八进制数022、-037010和10大小不一样因为八进制并不常用,所以此种表示法比较少见以“0 x”或者“0X”开始的整型常数是十六进制AF和af用来表示十进制的1015十六进制的形式比较常用0 x12、-0 x1F,-0 x1f第19页/共105页中的一段中的一段1616进制代码进制代码第20页/共105页字符(字符(CharacterCharacter)常量)常量字符常量的表示方法a,A,5,%,$单引号内只能有一个字符,除非用“”开头就是一个普通整数,也可以参与各种数学运算每个字符具有一个0255之间的数值,可从ASCII表查出注意:5和整数5的
13、区别字符的数学运算在密码学内用得比较多用“”开头的字符为转义字符例如,n,代表1个字符第21页/共105页The ASCII letter codesThe ASCII letter codesLetterCodeLetterCodeLetterCodeLetterCodea01100001n01101110A01000001N01001110b01100010o01101111B01000010001001111c01100011p01110000C01000011P01010000d01100100q01110001D01000100Q01010001e01100101r01110010E
14、01000101R01010010f01100110s01110011F01000110S01010011g01100111t01110100G01000111T01010100h01101000u01110101H01001000U01010101i01101001v01110110I01001001V01010110j01101010w01110111J01001010w01010111k01101011x01111000K01001011X01011000101101100y01111001L01001100Y01011001m01101101z01111010M01001101Z010
15、11010第22页/共105页字符常量字符常量转义字符一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示第23页/共105页字符串(字符串(StringString)常量)常量用双引号括住的由0个或多个字符组成的字符序列I am a string表示空字符串转义字符也可以在字符串中使用引号只作为字符串开始和结束的标志C语言内部用0表示字符串的结束除注释外,是唯一可以出现中文的地方x和x是不同的里定义了一系列专门的字符串处理函数第24页/共105页字符串在内存中的存放方式字符串在内存中的存放方式在内存中每个字符按顺序存放字符串结尾有一个空字符(ASCII=0,0)作为字符串结束标志字符串结
16、束标志0是不能显示的,在字符串常量中,也不用显式写出来举例TESTaT E S T 084 69 83 84 000a 0009700由系统在字符串的末尾自动加一个0作为字符串的结束标志第25页/共105页字符常量与字符串常量的区别字符常量与字符串常量的区别 字符常量和字符串常量是不同类型的数据定界符不同:字符常量使用单引号,而字符串常量使用双引号a与a是不同的字符常量只能是单个字符,字符串常量则可以含一个或多个字符不能把一个字符串赋值给一个字符型变量chara,c;a=A;c=“A”;/*语句非法*/a0a第26页/共105页宏常量宏常量宏常量也称符号常量一般采用全大写字母表示#define
17、标识符字符串不是语句,而是一种编译预处理命令宏替换(MacroSubstitulition)第27页/共105页为什么需要常量?为什么需要常量?要避免使用幻数直接使用的常数叫幻数。现象与危害:当常数需要改变时,要修改所有使用它的代码,工作量巨大,还可能有遗漏。解决方案:把幻数定义为宏、const常量,或者枚举常量。建议使用后两者。#define ARRAY_SIZE 10const int ARRAY_SIZE=10;enum ARRAY_SIZE=10;第28页/共105页例例2.2 2.2:计算圆的周长和面积:计算圆的周长和面积#includeinclude#definedefine#de
18、finedefinemainmain()()printfprintf(area=%fn,PI*R*R);(area=%fn,PI*R*R);printfprintf(circumference=%fn,2*PI*R);(circumference=%fn,2*PI*R);相当于执行相当于执行#includeinclude mainmain()()printfprintf(area=%fn,3.14159*5.3*5.3);(area=%fn,3.14159*5.3*5.3);printfprintf *5.3);5.3);第29页/共105页例例2.2 2.2:计算圆的周长和面积:计算圆的周长
19、和面积#includeinclude#definedefine;#definedefine;mainmain()()printfprintf(area=%fn,PI*R*R);(area=%fn,PI*R*R);printfprintf(circumference=%fn,2*PI*R);(circumference=%fn,2*PI*R);相当于执行相当于执行#includeinclude mainmain()()printfprintf;););printfprintf;*;););语法错误语法错误第30页/共105页constconst常量常量用const修饰定义的变量为常量const
20、float pi=3.1425926;const常量与宏常量相比的优点是什么?const常量有数据类型某些集成化调试工具可以对const常量进行调试第31页/共105页枚举(枚举(EnumerationEnumeration)常量)常量一个被遗忘的角色从程序来窥其一斑 enum weeks SUN,MON,TUE,WED,THU,FRI,SAT;enum weeks today;enum response no,yes,none;enum response answer;today =TUE;answer=yes;if(answer=yes)printf(Today is Tuesday.n)
21、;else printf(Today is NOT Tuesday.n);第32页/共105页变量变量定义 变量就是在程序执行过程中,其值可以改变的量。变量用来临时保存程序运行过程中的中间结果。第33页/共105页变量变量 在程序中对变量的访问(存入,读取)都是通过变量名进行的。变量在内存占据存储空间,因此对变量也可以通过它在内存中的地址,即指向变量的指针进行。7 abcdec=7x=c第34页/共105页变量类型变量类型变量是存放常量值(数据)的,常量(数据)有类型之分,因而变量也有类型之分,变量类型是来确定其变量存储空间的长度和存储格式。原因第35页/共105页变量类型变量类型类型说明一般
22、格式:类型名 变量名表;举例:int i,j,I,count;short a=y,b;long l1,l2;unsigned n1,n2;char c1,c2,c3;float x1,x2;double w,y,z1,z2;第36页/共105页变量类型变量类型注明变量必需先定义,后使用。变量分类整形变量浮点变量字符变量第37页/共105页变量声明变量声明使用变量的基本原则变量必须先定义,后使用所有变量必须在第一条可执行语句前定义声明的顺序无关紧要一条声明语句可声明若干个同类型的变量声明变量,是初始化变量的最好时机不被初始化的变量,其值为危险的随机数char esc=a;int i=1;int
23、sum=0;float eps=1.0e-5;第38页/共105页定义变量的两个主要作用定义变量的两个主要作用变量名标明数据在内存中的地址,在对程序进行编译连接时系统为每个变量名分配一个内存地址。声明类型的目的是告诉系统变量需要占用的存储单元数据,以便系统为变量分配存储单元。第39页/共105页Defining the integer variable named total第40页/共105页变量的值可以在定义变量时获得,也可以在程序执行的过程中获得变量赋值的一般格式如下:变量名=表达式例如:y=x+6.9;注意:“=”并非指两侧相等,而是包含了计算和赋值两个过程。第41页/共105页若没有
24、定义变量直接在程序中使用变量:student_num=30;则编译时会指出未定义错误。若程序中有:int student_num;/*变量定义*/:student_num=30;/*给变量赋值*/则student_num变量是合法的。说 明第42页/共105页整形变量整形变量存储形式存储形式符号位符号位数值部分数值部分整形变量分类整形变量分类标准整形(int)短整形(short)长整形(long)(与int相同)无符号整形(unsigned)第43页/共105页整形(整形(=长整形)长整形)定义格式定义举例intint 变量名表;变量名表;long int long int 变量名表;变量名表
25、;long int i,j,k;long int i,j,k;long n;long n;第44页/共105页整形(整形(=长整形)长整形)取值范围当当n=5n=5时:时:当当n=-5n=-5时:时:3232位:位:-231-231231-1231-1int i=2147483647;int i=2147483647;第45页/共105页实型变量实型变量 定义格式定义举例变量性质float float 变量名表;变量名表;doubledouble变量名表;变量名表;float c1,c2,c3;float c1,c2,c3;double c4;double c4;类型类型比特数比特数有效有效数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型 运算 表达式
限制150内