上篇內容講述了整個語言的發展【為什麼會產生編程語言】,以及學習C++所需要掌握的內容。
這節開始認識第一部分最基本的內容:C++的內建類型,也就是基本類型。
在這些知識之前留一個問題:為什麼基本所有語言中都有相似的這些基本類型。
bool : 用於表示真/假
bool b_ret1 = true; bool b_ret2 = false;
short /long :short用於縮減/增大整數表示的范圍,也就是占用內存的多少。
signed / unsigned :指定符號。但不會改變內存大小。
int(signed int) / unsigned int :表示一般意義上的整數,兩者的區別在於有無符號。
加上short,signed,unsigned後,就可以控制整數的范圍。所以有了多種整數:
int(signed int) / unsigned int
signed short int / unsigned short int
signed long int / unsigned long int
int age = 20; unsigned int age2 = 20; short int age3 = 20; unsigned short int small_int = 22222; unsigned long int big_number = 2222222222;
char(signed char) / unsigned char :表示字符。編程中用char已經足夠了,效率也不會用影響。
這個類型有些糾結,本意是表示字符的,但是經常用它的數組存儲數據,等說到指針的時候,再詳細說吧。
char letter_char = 'c';
wchar_t :寬字節字符。由於char在計算機存儲中占用一個字節,最多能表示256個字符,
英語字符是足夠儲存,但是光漢字就有上萬個,char已經無能為力了。
所以wchar_t占兩個字節,甚至四個字節,完成足夠表示其它民族的語言。
wchar_t wide_char = L'c'
float: 單精度浮點 double:雙精度浮點 long double :擴展精度
兩個類型在概念上都是小數,double比float多占用了內存空間,表示的更精確。一般的小數用float就可以了。
float _length = 3.5f; double _length = 3.5555 long double l_legnth = 3.5e-3L
void:空類型。一般用表示無返回值 ,或者不確定類型的對象。
return void; void* p = 0;
Windows XP 32位平台下的取值范圍:
Type
Size
數值范圍
無值型void
0 byte
無值域
布爾型bool
1 byte
true false
有符號短整型short [int] /signed short [int]
2 byte
-32768~32767
無符號短整型unsigned short [int]
2 byte
0~65535
有符號整型int /signed [int]
4 byte
-2147483648~2147483647
無符號整型unsigned [int]
4 byte
0~4294967295
有符號長整型long [int]/signed long [int]
4 byte
-2147483648~2147483647
無符號長整型unsigned long [int]
4 byte
0~4294967295
long long
8 byte
0~18446744073709552000
有符號字符型char/signed char
1 byte
-128~127
無符號字符型unsigned char
1 byte
0~255
寬字符型wchar_t (unsigned short.)
2 byte
0~65535
單精度浮點型float
4 byte
-3.4E-38~3.4E+38
雙精度浮點型double
8 byte
1.7E-308~1.7E+308
long double
8 byte
由於平台和編譯器的不同,每種類型的范圍及所占內存大小並不確定。想具體確定可以用下邊代碼(轉自:http://www.cnblogs.com/ma6174/archive/2012/02/04/2337958.html)
#include <stdio.h> #include <limits.h> #include <float.h> #include <stdlib.h> int main(void) { printf("char類型的變量存儲值從%d到%d\n", CHAR_MIN, CHAR_MAX); printf("unsigned char類型的變量存儲值從0到%u\n", UCHAR_MAX); printf("short類型的變量存儲值從%d到%d\n", SHRT_MIN, SHRT_MAX); printf("unsigned short類型的變量存儲值從0到%u\n", USHRT_MAX); printf("int類型的變量存儲值從%d到%d\n", INT_MIN, INT_MAX); printf("unsigned int類型的變量存儲值從0到%u\n", UINT_MAX); printf("long類型的變量存儲值從%ld到%ld\n", LONG_MIN, LONG_MAX); printf("unsigned long類型的變量存儲值從0到%lu\n\n", ULONG_MAX); printf("long long類型的變量存儲值從%lld到%lld\n", LLONG_MIN, LLONG_MAX); printf("unsigned long long類型的變量存儲值從0到%llu\n", ULLONG_MAX); printf("最小的非零float類型變量的值的是%.3e\n", FLT_MIN); printf("最大的float類型變量的值的是%.3e\n", FLT_MAX); printf("最小的非零double類型變量的值的是%.3e\n", DBL_MIN); printf("最大的double類型變量的值的是%.3e\n\n", DBL_MAX); printf("最小的非零long double類型變量的值的是%.3Le\n", LDBL_MIN); printf("最大的long double類型變量的值的是%.3Le\n", LDBL_MAX); printf("float類型的變量提供%u位精度的小數位數\n", FLT_DIG); printf("double類型的變量提供%u位精度的小數位數\n\n", DBL_DIG); printf("long double類型的變量提供%u位精度的小數位數\n", LDBL_DIG); system("pause"); return 0; }