已阅读5页,还剩77页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 数据类型、运算符与表达式,授 课: 东南大学 郑雪清E_mail: ,VC+语言程序设计,第2章 数据类型、运算符与表达式,学习内容和基本操作: VC的数据类型 基本运算符 表达式语句、空语句及自增、自减运算符 考试大纲要求: 常量表示法; 各种类型的变量说明及其初始化; 运算符和表达式。,重点与难点: 数据类型 运算符 表达式 时间和安排:,2.1 VC+的数据类型 一个程序应包括两个方面的内容: 数据的描述。 操作步骤,即动作的描述。 数据是操作的对象,操作结果会改变数据的状况。 程序设计必须认真考虑和设计数据结构和操作步骤(即算法)。 著名计算机科学家沃思(Niklklaus Wirth)提出一个公式: 数据结构十算法=程序,程序算法十数据结构十程序设计方法十语言工具和环境 程序中的四个方面是程序设计人员所应具备的知识。在本书中不可能全面介绍这些内容,它们都属于有关的专门课程范畴。本书主要介绍VC+语言本身。 VC+语言提供的数据结构是以数据类型形式出现的,VC+的数据类型如下:,本节介绍组成C程序的基本单位(C词法记号:关键字、标识符、标点符号分隔符 ,运算符,空白符及基本数据类型)。,字符型 整 型 基本数据类型 实 型(单精度) 实 型(双精度) 无值型 数据类型 数组类型 指针类型 导出数据类型 结构体类型 共用体类型 枚举类型 类,2.1.1 关键字(保留字) C系统预定义的、由小写英文字母组成的单词、词头或词组。 在C语言中,已有特殊含义和用途。 在程序中不得将它们另作它用。 预处理命令中,虽不算C关键字,但最好把它们看作为C的关键字,不要使用它们作为其他用途,如 (include、define等)。 VC的关键字:P1011:表21(43)和20个双下划线新关键字。,2.1.2 标识符 以字母或下划线开始的字母、数字以及下划线组成的字符序列称为标识符。标识符的第一个字符必须是字母或下划线。 以大写字母、小写字母或下划线(_)开始。 可以由大小写字母、下划线(_)或数字0-9组成。 大写字母和小写字母代表不同的标识符。 不能是C+关键字。 例如:Rectangle,Draw_line,_No1都是合法的标识符,,不合法的标识符: No.1,a3.5 /不能使用小数点。 this /这是关键字,不能用作标识符 $ab /不能使用符号$ 6ab /不能以数字开头 说明: 标识符的有效长度: 1-247个字符 标识符的命名方法:,2.1.3 标点符号 9个:#、(、)、,、:、;、 2.1.4 分隔符 运算符、空格、标点符号、回车键和Tab键,用得最多的是空格键。,布尔常量(逻辑常量bool) 只有两个:false(假或0)和true(真或1) 字符型(char) 可以有signed,unsigned 整型(int) 可以有short,long,signed,unsigned 实型(float) 双精度型(double) 可以有long,基本数据类型:,2.1.5 C+的基本数据类型 字符型(char) 占用1个字节数; 取值范围: char 128127、 signed char 128127、 unsigned char 0255; 在VC中无修饰词的char,编译程序认为是有符号的;char型从本质上说也是整数类型,长度为1个字节,通常用来存放字符的ASCII码。,整型(int) 短整型(short int): 占用2个字节数; 取值范围: short int、 3276832767 signed short int、 3276832767 unsigned short int;065535。,整型(int): 占用4个字节数; 取值范围: Int 231(2311) signed int 231(2311) unsigned int 0(2321) 长整型(long int) 占用4个字节数; 取值范围: long Int 231(2311) signed long int 231(2311) unsigned long int 0(2321),注意:用signed、unsigned、long、short来修饰int时,关键词int可以省略,在VC中无修饰词的int和char,编译程序认为是有符号的。 二进制形式存储中,其最高位为符号位,“1”表示负;“0”表示正。,实型(float) 占用4个字节数; 取值范围:3.4 10383.4 1038;无修饰词。 双精度型(double) 占用8个字节数; 取值范围: double 1.7 103081.7 10308 long double 1.7 103081.7 10308。,无值型(void) 占用字节数为:0; 取值范围为:无值。 例:类型修饰符unsigned修饰 类型是错误的 A.char B.int C.long int D.float 答:D,2.1.6 常量 字面常量 在程序中不要任何说明就可直接使用的常量。 整型常量 十进制整数: 若干个09的数字; 八进制整数: 0(数字0开头)若干个07的数字; 十六进制整数: 0x若干个09的数字及AF的字母(大小写均可); 长整型与无符号整型常数:以后缀字母L(或l)表示长整型数;以后缀字母U(或u)表示无符号整型数;后缀字母L和U同时组合(大小写无关、顺序无关)表示无符号长整型数;没有后缀字母时,编译系统根据常数的大小自动进行识别。,例:下列十六进制的整型常数表示中, 是错误的 A.0xaf B.0x1b C.2fx D.0xae 答:C 实型常量 一般形式(定点表示):它由一个符号(正号可以省略)后接若干个十进制数字09和一个小数点组成。,指数形式(浮点表示,科学表示法):它由一个十进制整数或定点数后接一个字母e(大、小写均可)和一个13位的十进制整数所组成,字母e之前的部分称为该浮点数的尾数,之后的部分称为该浮点数的指数,该浮点数的值就是它的尾数乘以10的指数幂。注意:在字母e之前必须有数字。 例:下列double型常量表示中, 是错误的 A.E15 B35 C.3E5 D.3E-5 答:A,字符型常量 一般形式:用单引号括起来的单个字符。 转义序列:就是以转义符“”开始,后跟一个字符或一个整型常量(字符的ASCII编码值)的办法来表示一个字符。详见:P15,表25,段中的描述;P401,附录A ASCII码表 注意:单引号、反斜杠必须使用其它方法表示,双引号括起来的字符不是字符型常量,例1.在C语言中,合法的字符型常量是_ A.t B.“A“ C.65 D.A 答案:A 例2.在C语言中,合法的字符型常量是_ A.84 B.x43 C.ab D.“0“ 答案 :B (假设A的答案是74 会怎样?),“转义字符”,意思是将反斜杠()后面的字符转变成另外的意义。如n中的“n”不代表字母n而作为“换行”符。 例 #include void main() cout“ab ct“gden“; cout“ht“j kn“; 程序的运行结果: ab c gde h j k,例3.在c+语言中,char型数据在内存中的存储形式是_ A.ASCII码 B.补码 C. 反码 D.原码 (4)字符串常量:用双引号括起来的若干个字符。存放形式是:按串中字符的排列次序顺序存放,每个字符占一个字节,并在末尾添加0作为结束标记。区别a和“a”。 (5)布尔常量(逻辑常量) 只有两个:false(假)和true(真),2.标识符常量 例 /* example */ #include #define PI 3.1415926 /使用编译预处理指令 const float PII=3.1415926 /使用C+常量说明符 void main() float s,r,i; r=10.; i=2.*PI*r; s=PII*r*r; cout“i=“in; cout“s=“sn; ,程序中用#define命令行定义PI代表常量3.1415926,此后凡在此文件中出现的PI都代表3.1415926,可以和常量一样进行运算. 这种用一个标识符代表一个常量的,称为标识符常量,即标识符形式的常量,注意标识符常量不同于变量,它的值不能改变,也不能再被赋值。如再被赋值语句赋值是错误的。 习惯上,标识符常量名用大写,变量用小写,以示区别。 标识符常量必须先定义后使用.,2.1.7 变量(P16) 其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念。 注意,大写字母和小写字母被认为是两个不同的字符。因此,和是两个不同的变量名。习惯上,变量名用小写字母表示,以增加可读性。,在给变量名和其它标识符命名时,应注意做到“见名知意”。有两种种命名方法:标准命名法和英文单词或汉语拼音法。 在V+中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”,否则,在编译时会指出有关“出错信息”。 在VC+中,已有特殊含义和用途的英文单词称为关键字(也称保留字) (见P10.表2-1、表2-2),关键字不能作为变量名或标识符使用。,(1) 变量说明语句 , , . ., ; 分别为: Char、short、int、long、float、double 例如: char c0,c1; int i,j; long len; float eps,f0,f15; double weight;,(2)变量初始化 变量初始化就是给变量赋初值;有两种形式: 先定义,再赋初值 例如: int sum,fac; sum=0; fac=1; 定义时赋值 例如: char c=A; int count = 0 注意: int a=3; int a(3); 是等价的。 常量和变量是计算机语言中数据的两种基本形式,初始化不是在编译阶段完成的(只有在第六章中介绍的静态存储变量和外部变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋以初值的。相当于有一个赋值语句,例如 int a=3; 相当于: int a; /指定a为整型变量 a=3; /赋值语句,将3赋予a 又如 int a,b, c=5; 相当于:int a,b, c; /指定a、b、c为整型变量 c5; /将5赋给c,例子 字符型数据(一),字符常量 单引号括起来的一个字符,如:a, D, ?, $ 字符变量 用来存放字符常量 例:char c1,c2; c1=a; c2=A; 字符数据在内存中的存储形式 以ASCII码存储,占1字节,用7个二进制位,Page 32,字符数据的使用方法 字符数据和整型数据之间可以运算。 字符数据与整型数据可以互相赋值。 字符串常量 例:“CHINA“ “a“ a 所以:char c; c=“a“;,Page 33,例子 字符型数据(二),例子 布尔型数据,布尔型变量的说明: 例:bool flag; 布尔型数据的取值: 只有 false 和 true 两个值,例子 变量初始化,例: int a=3; double f=3.56; char c=a; int c(5);,Page 35,程序例子 常量与变量,#include using namespace std; int main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotal endl; r=2.5; h=3.2; v=3.14159*r*r*h; coutv endl; ,Page 36,2.2 运算符和表达式 2.2.1 C+中的基本运算符 一、 C+运算符简介 C+语言的运算符范围很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理,例如将赋值符“=“作为赋值运算符,方括号作为下标运算符等。C+的运算符有以下几类。 (见P18表2-6) 1算术运算符 (一元+-,二元+-*/%) 2关系运算符 ( = = !=) 3逻辑运算符 (! |) 4位运算符 ( & | ) 5赋值运算符 (= 及其扩展赋值运算符),6条件运算符 (? :) 7. 逗号运算符 (,) 8指针运算符 (* 和 &) 9求字节数运算符 (sizeof) 10强制类型转换运算符 (类型) 11分量运算符 ( -) 12下标运算符 ( ) 13其它 (如函数调用运算符() 运算符见P18表2-6。,术语:运算符-完成对常量变量作不同运算的符号; 操作数-把参与运算的对象; C语言规定了运算符的优先级和结合性,在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如a-b*c, 相当于:a-(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如:a-bc,则按规定的“结合方向“处理。C规定了各种运算符的结合方向(结合性),“自左至右的结合方向“又称“右结合性“,以后可以看到有些运算符的结合方向为“自右至左“,即左结合性(例如,赋值运算符)。 如果一个运算符的两侧的数据类型不同,则会按前所述,先自动进行类型转换,使二者具有同一种类型,然后进行运算。,运算符优先级,括号 +,-,sizeof *, /, % +, - =, != 位运算 & | ?: 赋值运算 逗号运算,低,高,二、算术运算符和算术表达式 1、基本的算术运算符 十(加法运算符,或正值运算符。如35、3) 一(减法运算符,或负值运算符,如5一2、一3) *(乘法运算符。如3*5) (除法运算符。如53) (模运算符,或称求余运算符,要求两侧均为整型数据,如74的值为3)。,需要说明,两个整数相除结果为整数,如5/3的结果值为1,舍去小数部分。但是如果除数或被除数中有一个为负值,则舍入的方向是不固定的。例如,-53在有的机器上得到结果-1,有的机器则给出结果-2。多数机器采取“向零取整”方法,即5/31,一53=-1,取整后向零靠拢。如果参加运算的两个数中有一个数为实数,则结果是double型,因为所有实数都按double型进行运算。,2、算术表达式和运算符的优先级与结合性 用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称C算术表达式。运算对象包括常量、变量、函数等。例如,下面是一个合法的C算术表达 a*bc-1.5+a C语言规定了运算符的优先级和结合性,例如先乘除后加减。如a-b*c, b的左侧为减号,右侧为乘号,而乘号优先于减号,因此,相当于:a-(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如:a-bc,则按规定的“结合方向“处理。因此b先与减号结合,执行a一b的运算,再执行加c的运算。,、可以利用强制类型转换运算符将一个表达式转换成所需类型。例如: (double)a (将a转换成double类型) (int)(x+y) (将x+y的值转换成整型) (float)(53) (将53的值转换成float型) 其一般形式为 (类型名)(表达式) 注意,表达式应该用括号括起来。如果写成 (int) x+y 则只将x转换成整型,然后与y相加。,需要说明的是在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。例如 (int)x 如果x原指定为float型,进行强制类型运算后得到一个int型的中间变量,它的值等于x的整数部分,而x的类型不变(仍为float型)见下例: 强制类型转换有两种格式,除了上面所介绍的,还有格式: () 这种格式又称类型构造。 例: int(x)。,#include void main() float x=3.6; int i;i=(int) x; cout“x“xn; cout“i“in; 运行结果如下: x=3.6 i=3 x类型仍为float型,值仍等于3.6。 有两种类型转换: 自动类型转换,如3+6.5 强制类型转换,当自动类型转换不能实现目的时,可以用强制类型转换。 如“”运算符要求其两侧均为整型量,若x为float型,则“x3”不合法,必须用:(int)x3”。,三、关系运算符和关系表达式 C+中有六个关系运算符:,=,=,!+。关系运算符用来比较两个操作数的数值大小,其运行结果为一整数,关系成立时(为真时),结果为整数1,否则为0(为假时)。 例如: float a=2.5,b=10.7,x;int i;x=20.5; i=a=x=b; 结果i为1。 六个关系运算符的优先级是不一样的,前四个高于后两个。 关系运算符的优先级低于算术运算符,但高于赋值运算符。 由于对实数进行运算时,计算机会产生误差,因此,在判断两个实数是否相等时,不应直接用“=”进行比较,应为: fabs(x-y)=1e-6 fabs()是C+的一个库函数。,四、逻辑运算符和逻辑表达式 在C+中,逻辑运算符有三种:!(逻辑非),则:!x为1,!y为0。,(2)逻辑与 仅当两个操作数的值都为非0时,其与运算的结果才为真(值为1);否则为假(值为0)。如:对于上述的x和y,x&y的结果为0。 数学上的x的取值区间a=b,应表示为:x=b。,逻辑运算优先级:逻辑非最高,高于算术运算符;逻辑与次之,逻辑或最低;但与和或都低于关系运算符和算术运算符。 强调两点: 1.对于参加逻辑运算的操作数,其值为非0时,表示逻辑真;而0表示逻辑假。 2.逻辑运算的结果为逻辑真时,取值为1;否则取值为0;其运算结果可作为一个整数参与逻辑运算、关系运算或算术运算。,五、位运算符 C+中有六种位运算符: (按位取反,一元运算):对其操作数的每一个二进制位进行“取反操作“。如:a的值为010110(二进制数),则a为101001。 (左移,二元运算):其表达式格式为: ab,a为操作数,b为移动位数。左移一位相当于操作数乘以2。左移时,要注意数值溢出。如:a的值为00010110(二进制数),b为2,则ab为01011000。 左移可用于两个数之间的拼接。,(右移,二元运算):与左移类同。 右移一位相当于操作数除以2。右移时,忽略其小数部分。如:a的值为00010110(二进制数),b为2,则ab为00000101。 右移也可用于两个整数之间的拼接。 &(按位与,二元运算):对其两边的操作数的每一个对应二进制位进行与运算。如:a的值为00001110(二进制数),b 的值为10101010,则a&b为00001010。(P22),|(按位或,二元运算):对其两边的操作数的每一个对应二进制位进行或运算。如:a的值为00001110(二进制数),b 的值为10101010,则a|b为10101111。 (按位异或,二元运算)对其两边的操作数的每一个对应二进制位进行异或运算。如:a的值为00001110(二进制数),b 的值为10101010,则ab为10100101。,六、 赋值运算符和赋值表达式 1、赋值符号“就是赋值运算符,它的作用是将一个数据赋给一个变量。如“a3“的作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a,也可以将一个表达式的值赋给一个变量。 2、如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。 (1)将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。如i为整型变量,执行“i=3.56“的结果是使i的值为3。,(2)将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。 (3)字符型数据赋给整型变量时,由于字符只占一个字节,而整型变量为2个字节,因此将字符数据(8位)放到整型变量低8位中。 若字符最高位为0则整型变量高8位补0;若字符最高位为1则高8位全补1(下图)。这称为“符号扩展”这样做的目的是使数值保持不变,如变量c(字符、376)以整数形式输出为-2,无符号短整数的值是65534。,例: c=376 (11111110) 1111111111111110 c=176 (01111110) 0000000001111110,例:(结果会怎样?) #include void main(void) char a,b; unsigned short int i,j; int x,y; a=376; b=176; i=a;x=a; j=b;y=b; cout“a=“at“b=“bn; cout“i=“it“j=“jn; cout“x=“xt“y=“yn;,(4)将unsigned int 型数据赋给long int,不存在扩展问题,只需将高位补即可。将一个unsigned int 型数据赋给一个占字节数相同的整型变量(例如unsigned intint , unsigned longlong , unsigned short short )将unsigned型变量的内容原样送到非unsigned型变量中,但如果数据范围超过相应整型的范围,则会出现数据错误。 如:unsigned int a=65535 (216-1); int b; b=a;,unsigned a 1111111111111111 int b 1111111111111111 将a整个送到b中,由于b是int型,第1位是符号位,成了负数。(-1的补码). 可以用 cout“b=”b“n“; 来验证一下 (5)将非unsigned型数据赋给长度相同的unsigned型变量,也是原样照赋(连原有的符号位也作为数值一起传送)。如:,#include void main() unsigned a; int b=-1; a=b; cout“a=“a“n“; 运行结果:(上机验证),三、由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式“。 它的一般形式为: (变量)(赋值运算符)(表达式) 如“a=5“是一个赋值表达式。对赋值表达式求解的过程是:将赋值运算符右侧的“表达式“的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。例如,“a5“这个赋值表达式的值为5(变量a的值也是5)。 上述一般形式的赋值表达式中的“表达式“,又可以是一个赋值表达式。如 a=(b5),括弧内的“b5“是一个赋值表达式,它的值等于5,因此“a=(b5)“相当于“a5“,a的值等于5,整个赋值表达式的值也等于5。赋值运算符按照“自右而左“的结合顺序,因此:“b=5“外面的括弧可以不要,即“a=(b=5)“和“a=b=5“等价,都是先求“b5“的值(得5),然后再赋给a,下面是赋值表达式的例子: a=b=c=5 (赋值表达式值为5,a b c值均为5) a=5+(c=6) (表达式值为11,a值为11,c的值为6) a=(b=4)+(c=6) (表达式值为10, a值为10,b等于4,c等于6),七、复合的赋值运算符 在赋值符“=“之前加上其它运算符,可以构成复合的运算符。如果在“=“前加一个“+“运算符就成了复合运算符“+=“。例如,可以有: a+=3 等价于 a=a3 x*y+8 等价于 x=x*(y+8) x=3 等价于 x=x3 以“a+=3”为例来说明,它相当于使a进行一次自加。即先使a加3,再赋给a。,同样,“x*y8“的作用是使x乘以(y8),再赋给x。 为便于记忆,可以这样理解: a+b (其中a为变量,b为表达式) a+ =b (将有下划线的“a十“移到“=“右侧) a=a+b (在“=“左侧补上变量名) 注意,a=a+b 如果b是包含若干项的表达式,则相当于它有括号。如: x=y3 x=(y3) x=x%(y3) (不要写成x=xy3),赋值表达式也可以包含复合的赋值运算符。如 a+=a-=a*a 也是一个赋值表达式。如果a的初值为12,此赋值表达式的求解步骤如下: 先行“a-=a*a“的运算,它相当于: a=a-a*a=12-144=-132。 再进行“a+-132”的运算,相当于 a=a+(-132)=-132-132-264。 将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其它语句(如循环语句)中,这是C语言灵活性的一种表现。在第五章中将看到这种应用及其优越性。,凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。C语言规定可以使用10种复合赋值运算符。即: +=,-=,*=,/=,%=,=,=,=,|= C采用这种复合运算符,一是为了简化程序,使程序精练,二是为了提高编译效率,有利于编译,能产生质量较高的目标代码。)。,八、 逗号运算符和逗号表达式 C+语言提供一种特殊的运算符逗号运算符。用它将两个表达式连接起来。如 3+5,6+8 称为逗号表达式。逗号表达式的一般形式为: 表达式1,表达式2 逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8“的值为14。又如,逗号表达式,a=3*5,a*4 先求解a=3*5,得a的值为15,然后求解a*4得60,整个逗号表达式的值为60。 一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如: (a3*5,a*4), a5 先使a的值等于15,再进行a*4(但a值未变),再进行a5得20,即整个表达式的值为20。,逗号表达式的一般形式可以扩展为: 表达式1,表达式2,表达式3,表达式n 它的值为表达式n的值。 逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的: x(a3,6*3) x=a=3,6*a 第个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。,其实,逗号表达式无非是把若干个表达式“串联“起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而井非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中。 逗号运算符又称为“顺序求值运算符“。 请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。,2.14 sizeof()运算符 sizeof()运算符是一元运算,用于计算某一操作数类型的字节数。 如:sizeof(int) /其值为2或4 sizeof(float) /其值为4,2.2.2 各类数值型数据间的混合运算 整型、单精度型、双精度型数据可以混合运算。前已述及,字符型数据可以与整型通用,因此,整型、实型(包括单、双精度)、字符型数据间可以混合运算。例如 10+a+1.5-8765.1234*b 是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。,图中横向向左的箭头表示必定的转换,如字符数据必定先转换为整数,short型转为int型,float型数据在运算时一律转换成双精度型,以提高运算精度(即使是两个float型数据在加化成double型,然后再相加)。,doublefloat long unsigned int char, short,纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型与doub1e型数据进行运算,先将int型的数据转换成图double型,然后在两个同类型(double型)数据进行运算,结果为double型。注意箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为int型先转成unsigned型,再转成1ong型,再转成double型。如果一个Int型数据与一个double型数据运算,是直接将int型转成double型。同理,一个int型与一个Long型数据运算,先将int型转换成1ong型。,换言之,如果有一个数据是float型或double型,则另一数据要先转为double型,结果为double型。如果二个数据中最高级别为1ong型,则另一数据先转为1ong型,结果为1ong型。其它依此类推。假设已指定i为整型变量,f为float变量,d为double型变量,e为1ong型,有下面式子: 10十ai*f-d/e 运算次序为:进行10a的运算,先将a转换成整数97,运算结果为107。进行i*f的运算。先将i与f都转成double型,运算结果为double型。整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即10700000),结果为double型。将变量e化成double型,d/e结果为double型。将10十ai*f的结果与d/e相减的结果为double型。 上述的类型转换是由系统自动进行的。,2.2.3 逻辑表达式优化的副作用,在C+中,在求逻辑表达式的过程中,一旦能确定逻辑表达式的值时,就不必再逐步求值了。这就是逻辑表达式的优化。例如: 假设 int a=0,b=4,c=5; a&b+&-c 运行该表达式时,因为种种原因a=0,就能直接确定表达式的值为0, 所以就不用求b+和c,所以运行该表达式的结果是,a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国网络安全服务市场合规要求与攻防演练实践报告
- 冀教版(新版)二年级下学期 数学第3单元认识1000以内的数单元试卷(附答案)-01
- 高二地理第四章第二节区域工业化与城市化教案
- 复习金属与金属矿物教学设计
- 2025年关于急诊护理综述的题目及答案
- 2026年蔬菜种植公司农户合作种植管理及技术指导制度
- 2025年度岗位职责与安全操作规程培训试题及答案
- 应急预案成功案例
- 钢筋加班施工方案
- 酒店外营销方案
- 水产养殖技术模式发展
- 韭菜栽培技术课件
- 美导下店标准化流程
- 生产保密配方管理办法
- 草莓授粉培训课件图片
- 建筑企业安全生产目标责任书范本
- 阴式手术的围手术期护理
- 书法机构印章管理制度
- 物业管理居间合同协议书
- 中医基础阴阳学说课件
- 冷链设施设备验证与校准培训课件
评论
0/150
提交评论