在有些编程语言中,可以向变量赋予任何数值范例。譬喻,下面是BASIC代码的例子:x = 1;x = 1000;x = 3.14;x = 457000;在BASIC中,翻译器能思量按照数字长度和范例分派空间。而在C++,则必需先声明变量范例再利用变量:int x1 = 1;int x = 1000;float y = 3.14;long z = 457000;这样,编译器就可以举办范例查抄,确保措施运行时一切顺利。数据范例利用不妥会导致编译错误或告诫,以便阐明和更正之后再运行。有些数据范例有带标记和无标记两种。带标记(signed)数据范例可以包括正数和负数,而无标记(unsigned)数据范例只能包括正数。表1.1列出了C++中的数据范例、所要内存量和大概的取值范畴。
表1.1C++数据范例(32位措施)
数据范例 字节 数取值范畴
char 1 -128到126
unsigned char 1 0到255
short 2 -32,768到32,767
unsigned short 2 0到65,535
long 4 -2,147,483,648到2,147,483,648
unsigned long 4 0到4,294,967,295
int 4 同long
unsigned int 4 同unsigned long
float 4 1.2E-38到3.4E381
double 8 2.2E-308到1.8E3082
bool 1 true或false
从上表可以看出,int与long沟通。那么,为什么C++还要区分这两种数据范例呢?实际上这是个遗留问题。在16位编程情况中,int要求2个字节而long要求4个字节。而在32位编程情况中,这两种数据都用4个字节存放。C++Builder只生成32位措施,所以int与long沟通。说明 在C++ Builder和BorLand C++ 5.0中,Bool是个真正的数据范例。有些C++编译器有Bool要害字,则Bool不是个真正的数据范例。有时Bool只是个typedef,使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

C语言/C++ 教程

2018-02-01


在有些编程语言中,可以向变量赋予任何数值范例。譬喻,下面是BASIC代码的例子:x = 1;x = 1000;x = 3.14;x = 457000;在BASIC中,翻译器能思量按照数字长度和类