设为首页 加入收藏

TOP

C++ 语言基础(1)(二)
2011-01-02 12:41:34 】 浏览:15162
Tags:语言基础
x = 1000;x = 3.14;x = 457000;在BASIC中,翻译器能考虑根据数字长度和类型分配空间。而在C++(www.cppentry.com),则必须先声明变量类型再使用变量:int x1 = 1;int x = 1000;float y = 3.14;long z = 457000;这样,编译器就可以进行类型检查,确保程序运行时一切顺利。数据类型使用不当会导致编译错误或警告,以便分析和纠正之后再运行。有些数据类 型有带符号和无符号两种。带符号(signed)数据类型可以包含正数和负数,而无符号(unsigned)数据类型只能包含正数。表1.1列出了C++(www.cppentry.com) 中的数据类型、所要内存量和可能的取值范围。
表1.1C++(www.cppentry.com)数据类型(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++(www.cppentry.com)还要区分这两种数据类型呢 实际上这是个遗留问题。在16位编程(www.cppentry.com)环境中,int要求2个字节而 long要求4个字节。而在32位编程(www.cppentry.com)环境中,这两种数据都用4个字节存放。C++(www.cppentry.com)Builder只生成32位程序,所以int与long相同。说明 在C++(www.cppentry.com) Builder和BorLand C++(www.cppentry.com) 5.0中,Bool是个真正的数据类型。有些C++(www.cppentry.com)编译器有Bool关键字,则Bool不是个真正的数据类型。有时Bool只是个typedef,使 Bool等价于int。typedef实际上建立别名,使编译器在一个符号与另一符号间划上等号。typedef的语法如下:typedef int Bool;这就告诉编译器:Bool是int的别名。说明 只有double和float数据类型使用浮点数(带小数点的数)。其它数据类型只涉及整数值。尽管integer数据类型也可以指定带小数点的数值,但 小数部分会舍弃,只将整数部分赋予整型变量,例如:int x=3.75;得到的x取值为3。注意,这个整数值并不是四舍五入,而是放弃小数部分。顺便说一句,大多数Windows程序很少用到浮点数。C++(www.cppentry.com)可以 在必要时进行不同数据类型间的换算。例如:short result;long num1 = 200;long num2 = 200;result = num1 * num2;这里我想将两个长整型的积赋予一个短整型。尽管这个公式混用了两种数据类型,但C++(www.cppentry.com)能够进行换算。计算结果会怎样呢 结果会让你大吃一惊,是 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++(www.cppentry.com) Builder生成新的控制台应用程序时会自动加上这条语句。这在你所用的程序中不是必须的,所以代码清单中将其省略。无论有无这条语句,程序运行结果是 一致的。分析输出结果为:x=32767 x=32768如果用int数据类型,则不会有这个问题,因为int数据类型的取值范围在正向20亿之间,一般不会有绕回的问题。但这时程序可能会稍大一 些,因为int需要4字节存储,而short只需要2字节存储。对于大多数应用程序,这个差别是不显著的。前面介绍了自动类型换算。有时C++(www.cppentry.com)无法进行换 算,这时可能在编译器中产生编译错误,说Cannot convert from x to y(无法从x换算到Y)。编译器也可能警告说Conversion might lose significant digits(换算可能丢失显著位)。提示 编译器
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++ 语言基础2 下一篇C++经典入门指导

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目