入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

从Java到C++——基本数据类型

创建时间:2014-04-07 投稿人: 浏览次数:3429


    基本数据类型是C++最基本的内容,虽然各种计算机语言的基本数据类型的含意和用法大体相同,但各种语言下基本数据类型的字节大小,数值范围等是不一样的,这也是程序开发都必须要了解的。

    Java中有8种基本的数据类型,详细内容请参见《Java中的50个关键字》 ,C++中基本数据类型的各类就多了。详细如下:

C++中,基本数据类型也称内置类型,有算术类型空类型。空类型(void)没有具体的值,只用于某些特殊的场合,如函数的返回值void。算术类型有整形数、浮点数、布尔类型和字符。

    下表列出了C++标准规定的尺寸的最小值,C++标准只给定了尺寸的最小值,同时允许编译器赋予这些类型更大的尺寸。所以同一个数据类型在不同平台不同操作系统下尺寸大小有可能不同。

C++:数据类型

分类

类型

含义

最小尺寸

整形数

short

短整形

16位

int

整形

16位

long

长整形

32位

long long

长长整形

64位

浮点数

float

单精度浮点数

6位有效数字

double

双精度浮点数

10位有效数字

long double

扩展精度浮点数

10位有效数字

布尔类型

bool

布尔类型

未定义

字符

char

字符

8位

wchar_t

宽字符

16位

char16_t

16位unicode字符

16位

char32_t

32位unicode字符

32位

 

我在win7 x64系统上用VS2010和VS2013上测试了一下以上各种数据类型的大小如下:

void sizeTest()
{
	cout << "short:		" << sizeof(short) << endl;
	cout << "int:		" << sizeof(int) << endl;
	cout << "long:		" << sizeof(long) << endl;
	cout << "long long:	" << sizeof(long long) << endl;
	cout << "float:		" << sizeof(float) << endl;
	cout << "double:		" << sizeof(double) << endl;
	cout << "long double:	" << sizeof(long double) << endl;
	cout << "bool:		" << sizeof(bool) << endl;
	cout << "char:		" << sizeof(char) << endl;
	cout << "wchar_t:	" << sizeof(wchar_t) << endl;
	cout << "char16_t:	" << sizeof(char16_t) << endl;
	cout << "char32_t:	" << sizeof(char32_t) << endl;
}

    结果为:

    

    这里上面的int就是4个字节32位,大于标准规定的16位。

整形数和char类型又有带符号的和无符号的之分

    short、int、long、long long、char都有带符号和无符号两种。带符号的(signed)类型可以表示正数、负数和0,short、int、long、long long、char默认都带符号的。无符号的(unsigned)类型则只能表示正数和0,只需要在对应的类型名前面加unsigned,如unsigned int和unsigned char。在计算机中数值是以二进制的形式存储的,带符号的类型第一位是符号位,用于表示正负数,1表示负数,0表示正数;无符号的类型没有符号位,所有位数都用于表示数值的大小。如以short类型的为例:

    7表示成如下

    00000000 00000111

    -7表示:

    10000000 00000111

    假设一个数据类型的尺寸大小为n位,则带符号的表示的数值范围是-2n-1—2n-1-1; 无符号的表示的数值范围是0—2n-1.

bool类型是只表示true和false

    bool是用于表示正确(true)和错误(false)的一种逻辑类型,其中true和false是一种标识符,应该是一种宏定义,true为1,false为0。在程度中整数和浮点数都可以给bool类型的变量赋值,但只有当值为0时表示假,非0时都表示真。如下:

void BoolTest() 
{
	bool b1 = true;
	bool b2 = false;
	bool b3 = 0;
	bool b4 = 1;
	bool b5 = 5;
	bool b6 = -8;
	bool b7 = 1.25;
	cout << "true:	" << true << endl;
	cout << "false:	" <<  false << endl;
	cout << "b1:	" << b1 << endl;
	cout << "b2:	" << b2 << endl;
	cout << "0:	" << b3 << endl;
	cout << "1:	" << b4 << endl;
	cout << "5:	" << b5 << endl;
	cout << "-8:	" << b6 << endl;
	cout << "1.25:	" << b7 << endl;
}

结果为:

true:   1

false:  0

b1:     1

b2:     0

0:      0

1:      1

5:      1

-8:     1

1.25:   1

short和short int是等价的

    在程度中常常能看到short int,是否又有什么不同呢?short和short int应该是等价的,short应于修饰int,short是short int的简写。还有long和long int也是等价的。

如下程度:

	short st1 = 10;
	short int st2 = 10;
	long l1= 20;
	long int l2 = 20;
	cout << st1 << endl;
	cout << st2 << endl;
	cout << l1 << endl;
	cout << l2 << endl;
	cout << "short:		" << sizeof(short) << endl;
	cout << "shot int:	" << sizeof(short int) << endl;
	cout << "long:		" << sizeof(long) << endl;
	cout << "long int:	" << sizeof(long int) << endl;

结果如下:

10

10

20

20

short:          2

shot int:       2

long:           4

long int:       4

 

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。