您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 数据类型、运算符与表达式(石油大学 曾怡ppt 个人整理)
第二章数据类型、运算符与表达式内容提要:☻常量与变量☻各种数据类型的常量及变量☻变量赋初值☻不同类型数据间的混合运算☻几种基本运算符及表达形式§2.1C的数据类型C语言提供了以下一些数据类型。数据类型构造类型指针类型空类型(无值类型)void枚举类型enum数组类型结构类型struct联合类型union基本类型整型int字符型char实型(浮点型)单精度实型float双精度实型double§2.2常量与变量一、常量和符号常量1、在程序运行过程中其值不能被改变的量常量区分为不同的类型:如:12、3.2、‘a’2、符号常量用一个标识符代表一个常量定义方法:#define标识符常量例2.1符号常量的使用#definePRICE30#includestdio.hvoidmain(){intnum,total;num=10;total=num*PRICE;printf(″total=%d\n″,total);}total=300☻说明:如再用赋值语句给PRICE赋值☻PRICE=40;/*错误,不能给符号常量赋值。二、变量1、变量是可以改变的量它用标识符(变量名)来表示在内存中占用一定的存储空间。2、变量的定义方法类型符标识符3、注意事项:☻见名思议☻先定义,后使用☻习惯上符号常量名用大写变量名用小写,以示区别☻变量名的长度最好不要超过8个字符如:inti,j,imax;charc1,c2,s;floatx,root;doublex,y;例2.1#definePRICE30#includestdio.hvoidmain(){intnum,total;num=10;total=num*PRICE;printf(″total=%d\n″,total);}4、变量值☻变量定义后,默认值为0;☻可以对变量进行赋值赋值方法:x=1;/*此刻x的值为1*/2.3整型数据一、整型常量即整常数(1)十进制整常数。如:123,-456.4。(2)八进制整常数。由数字0~7组成;最高位必须用0作为引导符。以0头的数是八进制数。如:0123——(123)8(3)十六进制整常数。由0~9和a~f(A~F)组成;最高位必须用0x(0X)作为引导符。如:0x123——(123)16☻整型常量后缀u(U),p20二、整型变量1、整型数据在内存中的存放形式数据在内存中是以二进制补码形式存放的。符号位2、整型变量的分类:☻整型变量根据数据的取值范围不同,可以分为三类:基本整型(int)2、短整型(short)2、长整型(long)4☻为了充分变量的表数范围,又可以将变量定义为有符号数(signed)(可以省略)无符号数(unsigned)P20表2.1给出了各整型数据的取值范围。整数在存储单元的存储情况:以13为例3、整型变量的定义C规定“强制类型定义”。例如:inta,bunsignedshortc,d;longe,f例2.2整型变量的定义与使用#includestdio.hvoidmain(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);}运行结果:a+u=22,b+u=-14说明:可以看到不同种类的整型数据可以进行算术运算例2.3整型数据的溢出#includestdio.hvoidmain(){inta,b;a=32767;b=a+1;printf(“%d,%d\n”,a,b);}说明:数值是以补码表示的。一个整型变量只能容纳-32768~32767范围内的数,无法表示大于32767或小于-32768的数。遇此情况就发生“溢出”。运行结果:32767,-32768三、整型常量的类型(1)一个整数,如果其值在-32768~+32767范围内,认为它是int型,它可以赋值给int型和longint型变量。(2)一个整数,如果其值超过了上述范围,而在-2147483637~+2147483647范围内,则认为它是为长整型。可以将它赋值给一个longint型变量。(3)如果所用的C版本(如TurboC)分配给shortint与int型数据在内存中占据的长度相同,则它的表数范围与int型相同。因此一个int型的常量同时也是一个shortint型常量,可以赋给int型或shortint型变量。(4)一个整常量后面加一个字母u或U,认为是unsignedint型,如12345u,在内存中按unsignedint规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。如果写成-12345u,则先将-12345转换成其补码53191,然后按无符号数存储。5)在一个整常量后面加一个字母l或L,则认为是longint型常量。例如123l.432L.0L等。这往往用于函数调用中。如果函数的形参为longint型,则要求实参也为longint型。2.4实型数据一、实型常量实数又成为浮点数,有两种表示形式1、十进制数形式如:0.345、.345、345.0、345.、0.02、指数形式如:3.45e3、3.45E3注意:e前后必须都有数字,且e后必须为整数。.3e33e33.e33ee3e0.33、类型:缺省为double后缀f或F,为float型;后缀l或L,为longdouble型二、实型变量(取值范围与值的精度与机器有关)单精度(float型):占4个字节,7位有效数字(3.4e-38~3.4e+38)双精度(double型):占8个字节,15~16位有效数字(1.7e-308~1.7e+308)☻定义实型变量如:floatx,y;doublea,b,c;二、实型数据的舍入误差若数据超过有效位,则被舍去,故可能产生误差。#includestdio.hmain(){floata;doubleb;a=55555.33333;b=55555.33333333333333;printf(“a=%f\nb=%f\n”,a,b);}#includestdio.hmain(){floata,b;a=123456.789e5;b=a+20;printf(“a=%f\nb=%f\n”,a,b);}2.5字符型数据一、字符常量1、用单引号括起来的一个字符如:‘a’,’A’,‘1’,’*’‘abc’、“a”2、转义字符:特殊的字符常量,以“\”开头☻\n换行\t横向跳格☻\r回车\a报警☻\b退格\\反斜杠\‘输出单引号☻\dddddd表示1到3位八进制数字(ASCII码)如:’\101‘代表字符’A‘☻\xhhhh表示1到2位十六进制数字、如:’\x41‘代表字符’A‘例2.5转义字符的使用#includestdio.hvoidmain(){printf(abc\tde\nhf\tf\n);printf(h\ti\b\bjk\n);}二、字符变量☻字符型变量用来存放字符常量,注意只能放一个字符。☻字符变量的定义形式如下:charc1,c2;unsignedcharc3,c4;128☻可以用下面语句对c1,c2赋值:c1=‘a’;c2=‘\101’;c3=0xff;c4=‘\377’☻一个字符变量在内存中占一个字节。将一个字符常量存放到一个字符变量中,是将该字符的相应的ASCII代码存放到存储单元中。字符型数据与整型数据可以相互赋值。例2.6向字符变量赋以整数。#includestdio.hvoidmain(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}☻运行结果:ab9798例2.7向字符变量赋以整数。#includestdio.hvoidmain(){inti;charc;i=‘a’;c=97;printf(“%c%d\n”,c,c);printf(“%c%d\n”,i,i);}等同于i=97,c=’a‘☻运行结果:a97a97【例2.8】运行结果:A,B65,66#include“stdio.h”main(){charch1,ch2;ch1=’a’;ch2=’b’;ch1=ch1-32;ch2=ch2-32;printf(“%c,%c\n%d,%d\n”,ch1,ch2,ch1,ch2);}第2章基本数据类型四、字符串常量☻字符串常量是一对双撇号括起来的字符序列.☻合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”☻可以输出一个字符串,如printf(“Howdoyoudo.”);注意:‘a’是字符常量,”a”是字符串常量,二者不同。如:假设C被指定为字符变量:charcc=’a’;c=”a”;c=”CHINA”;结论:不能把一个字符串常量赋给一个字符变量。☻C规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C规定以字符’\0’作为字符串结束标志。如:如果有一个字符串常量”CHINA”,实际上在内存中是:CHINA\0它占内存单元不是5个字符,而是6个字符,最后一个字符为’\0’。但在输出时不输出’\0’。2.6数据的混合运算☻在C语言中,整型数据、实型数据、字符型数据之间可以在同一表达式中进行混合运算。在进行混合运算中,不同类型的数据要先转换成同一类型的数据,然后再进行运算。数据的转换方式有两种,即自动转换和强制转换。一、自动转换自动转换由编译系统自动完成,总的原则是两点:☻低类型数据必须转换成高类型数据。☻赋值号“=”右边的数据类型转换成左边的类型。如赋值号右边类型为float型,左边为int型,则float型应去掉小数部分转换成int型。具体转换规则如图所示。floatdoublelongunsignedintchar,short图2.2数据类型转换规则【例2.9】运行结果:1,32.000000,a33,129.000000,Amain(){intnum1,num2;floatnum3,num4;charch1,ch2;num1=1;num3=32.0;ch1='a';num2=num1+num3;num4=ch1+num3;ch2=ch1-num3;printf(%d,%f,%c\n,num1,num3,ch1);printf(%d,%f,%c\n,num2,num4,ch2);}二、强制转换☻强制类型转换是通过类型转换运算符来实现的。其格式为:(类型说明符)(表达式)☻其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如(int)(a+b)把a+b的结果转换成整型。【例2.10】运行结果:f1=65.000000,ch=Amain(){intnum=65;floatf1;charch;f1=(float)(num);ch=(char)(num);printf(f1=%f,ch=%c,f1,ch);}小结☻数据描述是通过数据类型来完成的,本章首先介绍了C语言中的常量与变量的定义及用法。然后结合实例重点介绍了常见的3种基本数据类型,整型数据(整型常量、整型变量)、实型数据(实型常量、实型变量)、字符型数据(字符型常量、字符型变量)。不同类型的变量用不同的类型说明符来定义,并且占用了不同的内存空间。☻不同类型的数据在进行混合运算时,要转换成相同的类型参与运算,转换的形式有自动转换和强制转换。
本文标题:数据类型、运算符与表达式(石油大学 曾怡ppt 个人整理)
链接地址:https://www.777doc.com/doc-4506331 .html