程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 從Java到C++——基本數據類型

從Java到C++——基本數據類型

編輯: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

16位unicode字符

16位

char32_t

32位unicode字符

32位

我在win7 x64系統上用VS2010和VS2013上測試了一下以上各種數據類型的大小如下:

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類型又有帶符號的和無符號的之分

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:\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

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:\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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved