您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 第2章基本数据类型及运算.
第二章基本数据类型及运算第二章基本数据类型及运算本章主要内容:数据类型、常量、变量、基本运算、类型转换及运算的优先级与集合性等。2.1基本数据类型数据是程序处理的基本对象。根据数据的不同性质和用途可分为不同的数据类型。不同的数据类型具有不同的存储长度、取值范围、允许的操作(具体与所使用的编程环境有关,以VC6为例)。数据类型关键字长度位数范围字符型[signed]char18-128~127unsignedchar180~255短整型[signed]short[int]216-32768~32767unsignedshort[int]2160~65535整型[signed]int432-2147483648~2147483647[unsigned]int4320~4294967295长整型[signed]long[int]432-231~(231-1)同整型unsignedlongint4320~(232-1)同无符号整型单精度型float432-3.4*10-38~3.4*1038双精度型double864-1.7*10-308~1.7*10308长双精度longdouble16128-1.2*10-4932~1.2*104932类型修饰符:short,long,unsigned,signedshortintshortlongintlongunsignedintunsignedunsignedchar,unsignedshort,unsignedlong有效位(浮点数)输出单精度浮点型数有效位为67位十进制数位输出双精度型数有效位为1516位十进制数位输出长双精度型数有效位为1819位十进制数位数据分为常量和变量。常量:在程序运行过程中值不改变的量。如4、3、‘a’变量:值可以改变的量称为变量。每一个变量对应一个不同的名字,即变量名,C中称为标识符。C规定:标识符只能由字母、数字和下划线三种字符组成,且第一个字符不能是数字。2.2常量数值常量:整型常量、浮点数常量字符型常量:字符常量、字符串常量、转义字符、符号常量2.2常量2.2.1整型常量:即常用的整数,C中有三种表示形式:一般的十进制形式。如:123、-5……以“0”开头的为8进制形式。如:023、-0127注:在8进制数中,不能出现=8的数字以“0X”开头的为16进制形式。如:0X123…三种不同的数制十进制八进制十六进制6501010x41-125-0175-0x7d长整型:-56l;3567L;04L无符号整型:586u;077765U;0xfffdU无符号长整型:0375ul;0x45feUL#includestdio.hvoidmain(){inta=123,b=0123,c=0x123;printf(a=%d,b=%d,c=%d\n,a,b,c);printf(a=%d,b=%o,c=%x\n,a,b,c);}例:整型常量的三种形式(例2-1)a=123,b=83,c=291a=123,b=123,c=123一般形式:最常见的实数表示形式,如:12.3、-.5、0.123……指数形式:由小数部分、字母e或E及指数部分组成。如:0.123E40.123*1040.12E-40.12*10-4注:字母E(e)前必须有数字。指数部分必须为整数2.2.2实型常量:即常用的实数,C中又称为浮点数,有两种表示形式:字符常量:用单引号引起来的字符。如‘a’、‘z’、‘S’、‘2’等注意:在C中,‘a’与‘A’是不同的、2和‘2’也是不同的字符按其对应的ASCII码值存储,占一个字节。‘a’97;‘A’65;‘9’57;‘0’48字符常量可以像整数一样在程序中参与运算。‘a’-32等价于97-32=65‘9’-9等价于57-9=48‘A’+32等价于65+32=972.2.3字符型常量转义字符除了这种形式的字符常量外,C还有一种特殊形式的字符常量:以反斜杠‘\’为开头的字符序列,称之为“转义字符”,表示字符的一种特殊形式。表示不可打印字符或具有特定用途的字符。用\ddd或\xhh形式可以表示任意字符。如:A65\101\x41553\065\x35Ω234\352\xea例2-2:’\t’的应用#includestdio.hvoidmain(){printf(11\n);printf(121\n);printf(12\t1\n);printf(123\t1\n);}2.2.4字符串常量用双引号括起的一串字符。如:“asd”、“hello”在内存中存储时,末尾自动加“串结束标识符号”,NULL或\0(ASCII码值为0)。例如:“China”占6个字节的存储形式如下:ChinaNULL6710410511297\02.2.5符号常量将常量定义为一个标识符,称为符号常量。通常用大写表示。符号常量是用#define语句定义的标识符,其一般形式为:#define标识符字符串如:#definePI3.1415926#defineTRUE1#defineSTAR‘*’便于程序调试和修改例2-3#definePI3.14159#includestdio.hvoidmain(){floatr,s;printf(请输入圆的半径:);scanf(%f,&r);s=PI*r*r;printf(Area=%f\n,s);}2.3变量在程序执行过程中其值可以改变的量。2.3.1变量定义变量必须先定义后使用,定义时要说明:数据类型和名称例如:intnum;charch1,ch2;doublelength;名称一般用小写字母,符合标识规定,不能与关键字同名。2.3.2变量的初始化定义变量时对变量赋初值。例如:intnum2,num3=100;charch1=‘b’,ch2;floatr=2.345;使程序简洁,提高程序的可读性。2.3.3变量地址存放变量的内存空间中的首单元地址称为变量地址。存放的内容称为变量的值。|&a2500H|——————2501H|----1250-----a=1250&b2502H|——————2503H|---------2504H|----123.67-----b=123.672505H|----------2506H|——————变量名、变量值、变量地址间的关系例如:shortinta=1250;floatb=123.67;1、整型变量整型变量可分为四种类型:基本型(int)、短整型(short)、长整型(long)和无符号型(unsinged)。整型变量总体上可以分为有符号数和无符号数两类整数类型所占位数定义类型字表示数的范围有符号基本型32int-2147483648~2147483647短整型16short[int]-32768~+32767长整型32long[int]-231~(231-1),同基本型无符号基本型32unsigned[int]0~4294967295短整型16unsignedshort0~65535长整型32unsignedlong0~(232-1)同无符号整型2.3.3变量类型整型变量的定义与赋值。例:inta=-12345;shortintb=12345;longintc=123456789;unsingedintd=54321;float:单精度数,在内存中占4个bytedouble:双精度数,在内存中占8个byte注:在对实型变量赋值时,理论上对于float型的变量,只能接收7位有效数字,而double型则能接收16位有效数字。例如:floata;doubleb;a=12345.67890;b=12345.67891234;则变量a就只接收到了前7位有效数字,而变量b则所有的13数字都能正常接收。2、实型变量//例2-4验证float和double的有效位#includestdio.hvoidmain(){floata;doubleb;//scanf(%f%lf,&a,&b);//printf(%f\n%.13lf\n,a,b);a=12345.67890;b=12345.6789123456789;printf(“a=%f,b=%.13lf\n”,a,b);//默认的输出小数点后6位}输出结果为a=12345.678711,b=12345.6789123456780结果:有效位与编程环境有关,用VC6运行有效位测试为float有8位,double类型为17位3、字符型变量字符型变量:用char关键字定义的变量,如:charc;它在内存中占一个字节。字符在内存中的存储形式:计算机在进行字符的存贮时,并不是存放的这个字符本身,而是以一个字节的空间来存放这个字符的ASCII编码。这就是说,字符在内存中也是以数的形式存放的。因此,在C语言中,对字符可以进行加、减等算术运算。字符数据的存放一个字符常量放到一个字符变量中,是把该字符的ASCII码放在存储单元中。charc1,c2;可以用下面的语句对c1、c2赋值:c1=‘a’;c2=‘b’;printf(“%c,%c,%d,%d”,c1,c2,c1,c2);9798C1C2例:验证字符在内存中的存储形式#includestdio.hvoidmain(){charc1,c2;c1='a';c2='d';printf(%c,%d\n,c1,c1);printf(%c,%d\n,c2,c2);}例2-5a,97d,100运算符的分类:算术运算、关系运算、逻辑运算、地址运算、按位运算2.4.1算术运算1.双目运算加a+b10+5=15减a-b10-5=5乘a*b10*5=50除a/b30/4=7;30.0/4=7.5取余a%b14%3=2;25%8=12.4运算符与表达式算术运算符符号功能例子+加法运算或正值运算1+2,+9-减法运算或负值运算4-8,-8*乘法运算5*3/除法运算4/3%取余运算7%3使用说明:1、两个整数相除的结果为整数,如4/3的结果为1,小数部分被舍去;2、两个参加运算的数中有一个数为实数,此时所有的数都按double型进行计算,其结果为double型数据;3、%运算符要求两个操作数都是整数,否则编译器会报错。例如5.3%3就是错误的表达式。如果实在要运算,可以先将其强制类型转换为整数,再进行求余,如(int)5.3%3=2;优先级:如a+b*c结合性:当一个运算对象(操作数)两侧的运算符的优先级别相同时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。如对表达式a+b-c的求解:对于变量b两侧的运算符优先级别相同,此时用到“结合性”的概念。结合性包括“左结合性”和“右结合性”2、算术运算符的优先级和结合性3.单目运算自增a++或++a等效于a=a+1;自减a--或--a等效于a=a-1;取负-a注意:单目运算的“前置”和“后置”的区别“前置”变量先增值(或先减值),后被引用“后置”变量先被引用,后再增值(或后减值)++i、--i(使用i之前,先使i的值加1、减1)i++、i--(先将i的值取出来使用,用后再使i的值加1、减1)参看下例:若有定义inti=10,j;执行j=i++;//则j=10;i=i+1=11;执行j=++i;//则i=i+1=11;j=11;++,--只能用于变量而不能用于常量或表达式。如5++,(a+b)++都是错误的。++、--的结合方向为“自右向左”。若有语句:i=3;-i++;则相当于-(i++);即对于语句:printf(“%d”,-i++);输出结果为:-3而输出后变量i的值为4;对于i=3,j=(i++)+(i++);?在使用++、--运算符时,应注意以下三点:j的值为6,i的值为5voidmain(){inti=3,j,k;k=(i++)+(i++)+(i++);printf(“k=%d,i=%d\n”,k,i);i=3;k=(++i)+(++i);printf(“k=%d,i=%d\n”,k,i);}voidmain()
本文标题:第2章基本数据类型及运算.
链接地址:https://www.777doc.com/doc-2154939 .html