寫在前面:
母語是Java,后來學了C++11,這兩個語言的基本數據類型隱式轉換不太一樣,有點暈,整理一下
整理自網絡和書籍,標明出處

C++
基本數據類型

——http://www.cnblogs.com/wangduo/
整型
- (signed) int
格式說明符:d
簡寫:int,long,signed
4 個字節,32 位,取值范圍:-231~231-1
- unsigned int
格式說明符:u
簡寫:unsigned
4 個字節,32 位,取值范圍:0~232-1
- (signed) short int
格式說明符:hd
簡寫:short
2 個字節,16 位,取值范圍:-215~215-1
- unsigned short int
格式說明符:hu
2 個字節,16 位,取值范圍:0~216-1
- (signed) long int
格式說明符:ld
不同的平台有不同的規定
一些是4字節,一些是8字節
- unsigned long int
格式說明符:lu
不同的平台有不同的規定
一些是4字節,一些是8字節
- (signed) long long int
格式說明符:lld
簡寫:long long
8 個字節,64 位,取值范圍:-263~263 -1
- unsigned long long int
格式說明符:llu
8 個字節,64 位,取值范圍:0~264 -1
浮點型
- float
格式說明符:f
4 個字節,32 位,取值范圍:3.4*10-38~3.4*1038
雙浮點型
- double
格式說明符:lf
8 個字節,64 位,取值范圍:1.7*10-308~1.7*10308
- long double
格式說明符:lf
C標准沒有詳細規定,只說了sizeof(long double)>=sizeof(double)
字符型
- char
格式說明符:c
如果將中文存儲在char中,會導致溢出而出現不可預期的字符如亂碼,見[◹]字符集編碼
1 個字節,8位,取值范圍:0~28-1
- wchar_t
不同的C或C++庫有不同的規定
4 或 8 個字節,16位或32位,取值范圍:0~216-1 或 0~232-1
字符串型
- string
格式說明符:s
C++引入的string 類類型
依據平台和編譯選項的不同,最大容量會有變化
大部分32位環境或者系統中,最大容量是0~232-1
布爾型
- bool
格式說明符:沒有!別亂用,小心某些平台爆炸
1個字節,取 0 或 1
隱式轉換
在混合類型運算,賦值,傳參,返回時,會發生隱式轉換
基本原則:低精度 –> 高精度
不知道圖是誰做的,都傳糊了
——http://www.runoob.com/cplusplus/cpp-data-types.html
——《信息學奧賽一本通》
Java
基本數據類型
- byte
1 個字節,8 位,取值范圍:-128~127
- short
2 個字節,16 位,取值范圍:-2^15~2^15-1
- int
4 個字節,32 位, 取值范圍:-2^31~2^31-1
- long
8 個字節,64 位,取值范圍:-2^63~2^63 -1
- float
4 個字節,取值范圍:-3.403E38~3.403E38
- double
8 個字節,取值范圍:-1.798E308~1.798E308
- char
在java中,字符天然就是unicode表示,所以char就天然的可以保持人類理解的char
2 個字節,16位,取值范圍:0~216-1
- String
在java的api中定義為char數組的形式
依據平台和編譯選項的不同,最大容量會有變化
大部分32位環境或者系統中,最大容量是0~232-1
- boolean
1個字節,取 true 或 false
不支持Unsigned無符號數據類型,但可以輕而易舉的完成Unsigned轉換
隱式轉換
在混合類型運算,賦值,傳參,返回時,會發生隱式轉換
基本原則:低精度 –> 高精度

