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


    基本数据类型是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

16unicode字符

16

char32_t

32unicode字符

32

 

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

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

    结果为:

    

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

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

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

    7表示成如下

    00000000 00000111

    -7表示:

    10000000 00000111

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

bool类型是只表示truefalse

    bool是用于表示正确(true)和错误(false)的一种逻辑类型,其中truefalse是一种标识符,应该是一种宏定义,true1false0。在程度中整数和浮点数都可以给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:\t" << true << endl;
	cout << "false:\t" <<  false << endl;
	cout << "b1:\t" << b1 << endl;
	cout << "b2:\t" << b2 << endl;
	cout << "0:\t" << b3 << endl;
	cout << "1:\t" << b4 << endl;
	cout << "5:\t" << b5 << endl;
	cout << "-8:\t" << b6 << endl;
	cout << "1.25:\t" << b7 << endl;
}

结果为:

true:   1

false:  0

b1:     1

b2:     0

0:      0

1:      1

5:      1

-8:     1

1.25:   1

shortshort int是等价的

    在程度中常常能看到short int,是否又有什么不同呢?shortshort int应该是等价的,short应于修饰intshortshort int的简写。还有longlong 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:\t\t" << sizeof(short) << endl;
	cout << "shot int:\t" << sizeof(short int) << endl;
	cout << "long:\t\t" << sizeof(long) << endl;
	cout << "long int:\t" << sizeof(long int) << endl;

结果如下:

10

10

20

20

short:          2

shot int:       2

long:           4

long int:       4

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值