第二章11颜色_第1页
第二章11颜色_第2页
第二章11颜色_第3页
第二章11颜色_第4页
第二章11颜色_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、1 1第二章 数据类型、运算符与表达式2.12.1变量定义变量定义2.2 2.2 数据类型数据类型2.3 2.3 运算符和表达式运算符和表达式2.4 2.4 应用举例应用举例2 22.1 变量定义1.1.变量的定义变量的定义变量也成为对象,是数据的存放之处变量也成为对象,是数据的存放之处变量有三个重要属性:名称、值和类型变量有三个重要属性:名称、值和类型程序运行过程中其值可变的量程序运行过程中其值可变的量, , 定义方式如下:定义方式如下: c/c+c/c+规定:规定: 程序中所有变量必须先定义后使用,可及时发现录入错误程序中所有变量必须先定义后使用,可及时发现录入错误(如,定义的变量为(如,

2、定义的变量为datadata,而程序体中使用变量为,而程序体中使用变量为datedate),同时还),同时还可限制非法运算(如:可限制非法运算(如:a%ba%b , , 若若a,ba,b为为floatfloat类型则出错)。类型则出错)。c+c+中变量可随时使用,随时定义。中变量可随时使用,随时定义。例如:int a, b; (定义变量a和b为整型) float x,y ; (定义变量x和y为单精度实型)数据类型数据类型 变量名表变量名表 ; ;3 32.变量的命名变量名、数组名、函数名称为标识符。标识符只能由字母、数字、下划线这三种字符组成,且第一个字符必须为字母或下划线,长度不大于247个

3、字符,大小写不通用。(关键字不能作为标识符)。关键字即是vc+的语法要求中使用的字。如 int if while 等。 正确的标识符:int, sum , de12, sum等。变量必须使用前定义,以分配空间。一般变量都是用匈牙利命名法命名的。int ncount; char chchoice;4 43.变量的初始化变量必须先有确定的值后才能参与各种相应的操作,变量获取值的途径有三:通过输入语句输入 (如:cina;)通过赋值语句赋值 (如:a=3;)通过初始化方式赋初值 (如:int k=3,x(5);)所谓初始化是指在定义变量的同时指定变量的初值,形式有二:例如:int k=3,m=3,

4、n(3);()int k=m=n=3;/不允许为多个变量同时初始化数据类型数据类型 变量名变量名= =表达式;表达式;数据类型数据类型 变量名(表达式);变量名(表达式);5 54.变量引用c+中增加了“引用”这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。所谓引用即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为:数据类型数据类型 &引用名引用名= =已定义的变量已定义的变量如:int a=3, &b=a; /定义b为a的引用b=5;/你知道此时a的值为多少吗?6 62.2 数据类型程序中要对各种各样的数据进行描述

5、和操作,用到的数据都必须指明程序中要对各种各样的数据进行描述和操作,用到的数据都必须指明其类型。数据类型的作用:其类型。数据类型的作用:指出了应为数据分配的存储空间的大小(数据的取值范围)指出了应为数据分配的存储空间的大小(数据的取值范围)规定了数据所能进行的操作规定了数据所能进行的操作 数据类型数据类型基本类型基本类型 构造类型构造类型 整型整型 ( (intint) )实型实型 字符型字符型(char)(char)布尔型布尔型( (boolbool) )空类型空类型(void) (void) 单精度型单精度型(float)(float)双精度型双精度型(double)(double) 指针

6、指针数组数组结构型结构型( (structstruct) )共用体共用体(union)(union)枚举枚举( (enumenum) )类类(class)(class)7 72000h2001h2002h2003h2004h33+5=?5运算器(2000h)+(2002h)用一个字节表示整数,范围为-128127;用两个字节表示整数,范围为-32768 32767。一般用四个字节表示整数范围为-231(231-1) 。内存cpu内存data外存program8硬盘 软盘2.2.1 数据类型整型整型8 81514 13 12 11 109876543210有符号数无符号数0 1 1 1 1 1

7、1 1 1 1 1 1 1 1 1 132767327670 1 1 1 1 1 1 1 1 1 1 1 1 1 1 032766327660 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1(补码)655351 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0-2655341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1-32767327691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-3276832768

8、9 9在程序运行过程中其值不能改变的量,有值常量和符号常量两种。在程序运行过程中其值不能改变的量,有值常量和符号常量两种。1.1.整型常量整型常量进制进制形式形式实例实例错例错例十进制十进制以数字以数字19开始开始-3,+5,12045八进制八进制以数字以数字0开始开始(由由07之间数字之间数字组成)组成)023,-010078十六进制十六进制以以0 x或或0x开始开始(由由09及及af组成)组成)0xaf,-0x510xfg1010#includevoid main(void)int int10,int8,int16; /定义3个整型变量int10=10;/默认为十进制int8=010;/八

9、进制int16=0 x10;/十六进制coutint10=int10endl;coutint8=int8endl;coutint16=int16endl;输出int10=10int8=8int16=1611112.2.整型变量:整型变量:分为有符号型与无符号型。分为有符号型与无符号型。有符号型:有符号型: short short 在内存中占两个字节,范围为在内存中占两个字节,范围为-2-21515 (2 21515-1-1) int int 在内存中占四个字节,范围为在内存中占四个字节,范围为-2-23131 (2 23131-1-1)longlong在内存中占四个字节,范围为在内存中占四个字

10、节,范围为-2-2-31-31223131-1-1无符号型:无符号型:最高位不表示符号位最高位不表示符号位unsigned short unsigned short 在内存中占两个字节,范围为在内存中占两个字节,范围为02021616-1-1unsigned int unsigned int 在内存中占四个字节,范围为在内存中占四个字节,范围为02023232-1-1unsigned longunsigned long在内存中占四个字节,范围为在内存中占四个字节,范围为02023232-1-112121)整型常量亦有长短之分,常量中无unsigned型,但一个非负的整型常量可以赋给unsign

11、ed型的变量。 2)若一个常量定义为长整型数,则在其后加l或l进行区分。如:32l 32l 564l等,内存为其分配四个字节存储。 一个数在内存中为1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1当这个数为有符号数时,是-1;为无符号数时,是232-1内存中的数是以补码的形式存放的。(举例说明)1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11313#include void main() unsigned short a; short int b= -1; a=b; couta=aendl;结果:65535 不同类型的整型数据不同类型的整型数据间的赋值归根到底就间

12、的赋值归根到底就是一条:是一条:按存储单元按存储单元中的存储形式直接传中的存储形式直接传送。送。 a1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1b1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1unsigned short a;14142.2.2 数据类型实型实型数又称浮点数,有两种表示方式:1)十进制形式: 23.0 24.5 3.56789 2) 指数形式: 23e1 145e-1 356789e1 e前有数字,后面必须是整数。实型变量分单精度 float 和双精度 double 两种形式:float:占四个字节,提供78位有效数字。double: 占八个字

13、节,提供1516位有效数字。举例说明1515#includevoid main(void)float a, b;double c, d;a=0.01;b=3.45678e-2;c=3.45678e-2;d=9.7654e-5;couta=atb=bendl;coutc=ctd=dendl;a=0.01 b=0.0345678c=0.0345678 d=9.7654e-005press any key to continue1616如果为实数,则用浮点数的形式在内存存储,表示如下:jtjsfs阶符阶符阶码阶码数符数符尾数尾数实数是既有整数又有小数的数。实数可以表示成:n=srjs 称为尾数,尾数

14、决定有效数字,即数字的精度。j 表示指数(阶码)。r 是基数,可取2,4,8,16等,对具体机器而言,基数取好后,就不能再变了。数有正有负, 所以设置数符; 阶码亦有正负, 所以设置阶符1717一般用一般用4 4个字节表示一个浮点数,也个字节表示一个浮点数,也有用有用8 8个字节表示的。个字节表示的。字长一定,尾数越多,精度越高;字长一定,尾数越多,精度越高;阶码越多,范围越大。阶码越多,范围越大。当计算机中出现小于机器所能表示当计算机中出现小于机器所能表示的最小数时,机器只能当零来处理的最小数时,机器只能当零来处理,当当出现超过机器所能表示的最大数时,出出现超过机器所能表示的最大数时,出现溢

15、出现象现溢出现象,一旦出现溢出,就会停止,一旦出现溢出,就会停止运算。运算。定点数,浮点数均会出现溢出现定点数,浮点数均会出现溢出现象。象。18182.2.3 2.2.3 数据类型数据类型字符型(字符型(char)char)字符型数据实际上是作为字符型数据实际上是作为整型数据整型数据在内存中存储的。在内存中存储的。计算机是以字符编码的形式处理字符的,因此,我们在计算机计算机是以字符编码的形式处理字符的,因此,我们在计算机内部是以内部是以asciiascii码码的形式表示所有字符的。所以的形式表示所有字符的。所以7 7位二进制数位二进制数即可表示出一个字符,即可表示出一个字符,我们用一个字节的容

16、量(我们用一个字节的容量(8 8位)存储一位)存储一个字符。个字符。例如:字符例如:字符a a的的asciiascii码为码为0 x410 x41或或6565,在内存中表示为:,在内存中表示为:01000001在程序中表示为:在程序中表示为:char grade ;char grade ;/ /定义一个字符型的变量空间定义一个字符型的变量空间(1(1个字节个字节) )grade=a; grade=a; / /必须用必须用 表示,否则易与标识符混同表示,否则易与标识符混同 内括起来的字符表示该字符的内括起来的字符表示该字符的asciiascii码。码。1919进一步,由于在内存中的形式与整型数据

17、相同,所以,进一步,由于在内存中的形式与整型数据相同,所以,可以直接用可以直接用其整型值给变量赋值。其整型值给变量赋值。char grade;char grade;grade=65;grade=65;以下的赋值形式均是等同的。以下的赋值形式均是等同的。grade=a; grade=65 ; grade=0 x41; grade=a; grade=65 ; grade=0 x41; grade=0101;grade=0101;#include#includevoid main(void)void main(void) char a,b; char a,b; a=a; a=a; / /输入输入as

18、ciiascii码码 b=65; b=65; / /输入十进制数输入十进制数 couta=aendl;couta=aendl; coutb=bendl; coutb=bendl; 输出:输出:a=aa=ab=ab=a即在内存中的表示均是相同的即在内存中的表示均是相同的010000012020非打印字符有些ascii的字符代表某些操作,不能打印出来,如回车、退格等,可用两种方式表示这些字符。1)用ascii码的形式 char re=13;2)用转义字符 char re=n;2121转义字符含 义 ascii代码a响铃7换行,将当前位置移到下一行开头10水平制表(跳到下一个tab位置)9退格,将当

19、前位置移到前一列8回车,将当前位置移到本行开头13换页,将当前位置移到下页开头12 v竖向跳格8 反斜杠字符“”92单引号(撇号)字符39双引号字符340空字符0ddd1到3位8进制数所代表的字符 xhh1到2位16进制数所代表的字符 2222转义字符虽然包含2个或多个字符,但它只代表一个字符。编译系统在见到字符“”时,会接着找它后面的字符,把它处理成一个字符,在内存中只占一个字节。 2323典型转义字符 :n换行 b 退格 t 下一个输出区若输出中包含这些特定格式,则再加一个输出 c:tctc 表示为coutc:tctc;可以用转义字符表示任一一个ascii字符 ddd (八进制) xhh

20、(十六进制)101 x41 x61 141 2424#includevoid main(void) char c1,c2,c3,c4; char n1,n2; c1=a;/字符常量 c2=97;/十进制 c3=x61; /转义字符 c4=0141;/八进制 coutc1=c1tc2=c2endl; coutc3=c3tc4=c4endl; n1=n; /转义字符:回车 n2=t; /转义字符:下一个输出区(tab) cout使用转义字符n; coutc1=c1n2c2=c2n1; coutc3=c3n2c4=c4n1;输出:c1=a c2=a c3=a c4=a使用转义字符c1=a c2=a

21、c3=a c4=a2525字符串常量:字符串常量:用 表示,在内存中顺序存放,以0结束。如:china 0 x430 x480 x490 x550 x410a在内存中占一个字节 a占两个字节aa0实际上内存是对应字符的ascii码形式010000110100100001001001010101010100000100000000china00110000101100001000000002626标识符常量标识符常量是以标识符形式出现的常量,作用是便于程序阅读和修改:在c+中有二种方法定义标识符常量,一种是使用编译预处理指令define;另一种是使用c+的常量说明符const。形式如下例如: #

22、define price 30 /在程序中凡是出现price均用30替代 #define pi 3.1415926 #define s “china”const float pi=3.1415926; /将变量pi定义为常量(举例说明)#define #define 标识符标识符 常量值常量值 const const 数据类型数据类型 标识符标识符 = = 常量值常量值2727#include#define pi 3.14156#define s chinavoid main(void) const float pi=3.14156; /变量作为常量使用 coutpi=piendl; cout

23、10*pi=10*piendl; coutsendl;/ pi=pi+3;/ pi=pi+4; coutpi=piendl; coutpi=piendl;输出:pi=3.1415610*pi=31.4156chinapi=3.14156pi=3.14156习惯上符号常量名大写,而变量名小写,以示区分。符号常量虽然用标识符来标识,但本质上是常量,具有常量值不能改变的性质。注意:注意:28282.2.4数据类型布尔类型布尔型(bool):标准c中没有布尔型数据,而是c+新增的数据类型。占一个字节,它的值为: true(1),false(1)29292.3 运算符和表达式2.3.1 2.3.1 基本

24、概念基本概念运算符具有三个属性:运算符具有三个属性:优先级优先级: :指运算的先后次序,共分指运算的先后次序,共分1515个级别。个级别。 结合性结合性: :指相同优先级运算符连续出现时的计算顺序,分自指相同优先级运算符连续出现时的计算顺序,分自左向右和自右向左两种,除特别声明外,皆指自左向右。左向右和自右向左两种,除特别声明外,皆指自左向右。 目目 数数: : 指运算符要求的操作数的个数,包括单目、双目和指运算符要求的操作数的个数,包括单目、双目和三目,一般目数越少,优先级越高。三目,一般目数越少,优先级越高。表达式:由常量、变量、函数调用和运算符按一定规律组合表达式:由常量、变量、函数调用

25、和运算符按一定规律组合在一在一 起构成的式子。如:起构成的式子。如:a+14/(3+2)-sqrt(17)a+14/(3+2)-sqrt(17)30302.3.2 2.3.2 运算符运算符1.1.算术运算算术运算种类: +(加法或取正) -(减法或取负) *(乘法) /(除法) %(求余数) +(自增) -(自减) 其中:+和-的结合性则是自右向左 优先级:(从高到低) (+、-、+、-) (*、/、%) (+、-) 正、负加、减3131说明:在除法运算中,当两个操作数都是整数时,商也为整数,小数部分一律舍去。如: 1/2 0 1.0 /2 0.5 %(求余运算)要求两个操作数都是整型,结果为

26、整除后余下的整余数。自增、自减运算符(+、- -) +i , -i (在使用 i之前,先使i的值加减1) i+ , i- (在使用 i之后, 使i的值加减1)若若 i i 的值为的值为3 3,则:,则: j=+i; jj=+i; j的值为的值为4, i4, i的值为的值为4 4 j=i+; jj=i+; j的值为的值为3, i3, i的值为的值为4 4注意: 自增、自减运算符只能用于变量,而不能用于常量和表达式。 () 5+、(a+b)+int x = 10; int x = 10; cout x = x+ end1; cout x = x+ end1; cout x = x end1; co

27、ut x = x end1; cout x = x end1; cout x = x end1; cout x = +x end1; cout x = +x end1; 运行结果:运行结果:33332 .2 .关系运算关系运算种类:种类: (小于)、(小于)、= (大于)(大于) = = =(等于)、(等于)、 =(大于等于)、(大于等于)、 !=!=(不等于)(不等于) 优先级:优先级: (从高到低)(从高到低)( ( 、 = 、 = ) = ) ( = = ( = = 、 != ) != ) 注意:注意:避免两个浮点数进行这样的比较避免两个浮点数进行这样的比较关系运算描述的是一种关系运算描

28、述的是一种“判断关系判断关系”,其结果有,其结果有“真真(true)”(true)”和和“假假(false)”(false)”两种。用两种。用“1”1”代表代表“真真”,用,用 “0” 0” 代代表表“假假” 例如:例如:5353的结果为的结果为1 1, a a b b 的结果为的结果为0 0思考:思考:x x为为0 0到到100100之间的数能否表示为之间的数能否表示为 0=x=100?0=x=100?34343.3.逻辑运算逻辑运算种类:种类:&(逻辑与)、(逻辑与)、|(逻辑或)、(逻辑或)、! !(逻辑非)(逻辑非)优先级:优先级: ( (从高到低从高到低) )! & |! & | 其

29、中,其中,“!” !” 是单目运算符,优先级高于算术运算符。是单目运算符,优先级高于算术运算符。“” 和和 “|” |” 低于关系运算符。低于关系运算符。 逻辑运算通常用来连接关系运算,逻辑运算符两逻辑运算通常用来连接关系运算,逻辑运算符两端的操作数如为端的操作数如为“非非”,就当作,就当作“真真”来处理,如果是来处理,如果是“”,便当作,便当作“假假”来处理。逻辑运算的结果也只有来处理。逻辑运算的结果也只有 0(false)0(false)和和1(true)1(true)两种。两种。3535说明:当多个&连续出现时,如表达式& 表达式 & 表达式从左到右,只要一个操作数为0,结果就为0,不进

30、行后续运算。当多个 | 连续出现时,如表达式 | 表达式 | 表达式从左到右,只要一个操作数为1,结果就为1,不进行后续运算。运算符运算符说明说明优先级优先级说明说明例例结结果果!取反取反2当操作数为假时,结果为真当操作数为假时,结果为真!01&与与11操作数均为真时,结果才为操作数均为真时,结果才为真真2&05&301|或或12操作数中有一个为真时,结操作数中有一个为真时,结果为真果为真0|10|0103636#include iostream.h#include iostream.hvoid main()void main()int m,n=10;int m,n=10; m=2&n+; m

31、=2&n+; coutm= m ,n= coutm= m ,n= n;y?x:y)(xy?x:y); / /将和中较大的一个数赋值给变量将和中较大的一个数赋值给变量maxmax条件运算符的结合性是由右向左条件运算符的结合性是由右向左思考题:思考题: 对对n(0)n(0)个人进行分班,每班个人进行分班,每班k(0)k(0)个人,最后不足个人,最后不足k k人人也编一班,问要编几个班?(试用条件运算符表达)也编一班,问要编几个班?(试用条件运算符表达)n%k0?n/k+1n%k0?n/k+1:n/kn/k5.5.赋值运算赋值运算格式:格式:作用:将一个数据赋给一个变量,并以变量的值作为整个式子作用

32、:将一个数据赋给一个变量,并以变量的值作为整个式子的值。的值。变量变量 赋值运算符赋值运算符 表达式表达式3838其中赋值运算符可以是其中赋值运算符可以是 “=”,=”,也可以是复合赋值运算也可以是复合赋值运算符符, ,如如“+=”+=”、“-=”-=”、“* *=”=”、“/=”/=”和和“%=”%=”等等。等等。复合赋值运算符的等价形式:复合赋值运算符的等价形式: (以(以 “+=”+=”为例)为例) 例如:例如: b /= a+2b /= a+2 等价于:等价于: b = b/(a+2)b = b/(a+2)结合性自右向左结合性自右向左若两端类型不同,则系统自动将右端类型转换为左端类型。

33、若两端类型不同,则系统自动将右端类型转换为左端类型。 例如:有定义例如:有定义 int a = 3.78; int a = 3.78; 则则a a中存放的值为中存放的值为3 3左端只能是变量左端只能是变量( (或数组元素或数组元素) ),不能为表达式或常量,如:,不能为表达式或常量,如:a+2a+2* *=b (=b () ) a=b+2=c+5 (a=b+2=c+5 () )变量变量+=+=表达式表达式变量变量 = = 变量表达变量表达式式是一个整体是一个整体39396.6.逗号运算逗号运算形式:形式: e1,e2,e3,e1,e2,e3, 其中其中e1e1、e2e2、e3e3均为表达式,从

34、左向右依次计均为表达式,从左向右依次计算各个表达式的值,而将最后一个表达式的值作为整个算各个表达式的值,而将最后一个表达式的值作为整个表达式的值,逗号运算符常用于循环语句的表达式中,表达式的值,逗号运算符常用于循环语句的表达式中,将多个表达式连接成一个表达式,如:将多个表达式连接成一个表达式,如:for(i=0,j=n;ij;i+,j-)for(i=0,j=n;ij;i+,j-)逗号运算符的优先级别最低。逗号运算符的优先级别最低。40407. sizeof()运算符 sizeof()运算符是一个单目运算符,用于计算某一个操作数类型的字节数。其格式为:sizeof()sizeof(int) /其

35、值为4sizeof(float) /其值为4sizeof(double) /其值为8sizeof(char) /其值为141418 .8 .数据类型的转换数据类型的转换数据类型的转换分为显式数据类型的转换分为显式( (强制强制) )转换和隐式(自动)转换。转换和隐式(自动)转换。强制转换格式:强制转换格式:或:或: 将一种数据类型的值强制转换为另外一种数据类型。常用于对将一种数据类型的值强制转换为另外一种数据类型。常用于对函数的参数及返回值的操作。函数的参数及返回值的操作。 假设、为假设、为floatfloat型数据,则型数据,则(int)(x+y)(int)(x+y)强行将强行将+ +的值的

36、值转换成整型,转换成整型,x x和和y y仍为仍为floatfloat型。型。自动转换:自动转换: 在不同类型数据进行混合运算时,系统自动进行的类型转在不同类型数据进行混合运算时,系统自动进行的类型转换。换。( (类型名类型名) )表达式表达式类型名类型名( (表达式表达式) )4242char short char short int unsigned longunsigned longfloatdoublelong int unsigned longunsigned longfloatdoublelong doubledouble必定的转换混合运算时由低向高转换自动转换还包括赋值运算时赋值号右端类型向左端类型的自动转换还包括赋值运算时赋值号右端类型向左端类型的转换转换例如例如 int i=10; unsignd int j=1;int i=10; unsignd int j=1;比较比较i i与与j j大小大小8.8.内部函数内部函数 c/c+c/c+中提供了多种中提供了

温馨提示

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

评论

0/150

提交评论