background image

Bool 等价于 int。typedef 实际上建立别名,使编译器在一个符号与另一符号间划上等号 。
typedef 的语法如下:typedef int Bool;这就告诉编译器:Bool 是 int

 

的别名。说明 只有 double

和 float 数据类型使用浮点数(带小数点的数)。其它数据类型只涉及整数值。尽管 integer
数据类型也可以指定带小数点的数值,但小数部分会舍弃,只将整数部分赋予整型变量 ,
例如:int x=3.75;得到的 x 取值为 3。注意,这个整数值并不是四舍五入,而是放弃小数部
分。顺便说一句,大多数 Windows 程序很少用到浮点数。C++可以在必要时进行不同数据
类型间的换算。例如:short result;long num1 = 200;long num2 = 200;result = num1 * num2;这
里我想将两个长整型的积赋予一个短整型。尽管这个公式混用了两种数据类型,但 C++能
够进行换算。计算结果会怎样呢?结果会让你大吃一惊,是 25536,这是绕接(wrop)的结果。
从表 1.1 可以看出,短整型的最大取值为 32767,在最大值之上加 1 会怎么样呢?得到的是
32768。这实际上与汽车里程计从 99999 回到 00000 的道理一样。为了说明这点,请输入并
运行下列清单 1.3 中包含的程序。
清单 1.3Wrapme.cpp
1: #include <iostream.h>
2: #include <conio.h>
3: #pragma hdrstop
4:
5: int main(int argc,char **argv)
6: {
7:short x = 32767;
8:cout << " x = " << x << endl;
9:x++;
10: cout << " x = " << x << endl;
11: getch();
12: return 0;
13: }
说明后面几节要介绍的有些清单没有下列语句:
#include<condefs.h>
C++ Builder 生成新的控制台应用程序时会自动加上这条语句。这在你所用的程序中不是必
须的,所以代码清单中将其省略。无论有无这条语句,程序运行结果是一致的。分析输出
结果为:x=32767 x=32768 如果用 int 数据类型,则不会有这个问题,因为 int 数据类型的
取值范围在正向 20 亿之间,一般不会有绕回的问题。但这时程序可能会稍大一些,因为
int 需要 4 字节存储,而 short 只需要 2 字节存储。对于大多数应用程序,这个差别是不显
著的。前面介绍了自动类型换算。有时 C++无法进行换算,这时可能在编译器中产生编译
错误,说 Cannot convert from x to y(无法从 x 换算到 Y)。编译器也可能警告说 Conversion 
might lose significant digits

 

(换算可能丢失显著位)。提示 编译器警告应当作编译器错误

因为它表明出了错误。我们应努力生成无警告的编译。有时警告无法避免,但一定要认真
检查所有警告。应充分了解警告的原因并尽量予以纠正。
C++操作符
操作符(operator)用于操作数据。操作符进行计算、检查等式、进行赋值、操作变量和进行其
它更奇怪的工作。C++中有许多操作符,这里不想列出全部,只列出最常用的操作符,如
下表所示。表 1.2 常用 C++操作符操作符说明举例
算术运算符

 

加 x=y+z;