最近復習C++相關內容,決定在這裡記錄自己復習的過程。 以前寫過部分文字,但是沒有堅持連續寫,因此學完後
基本又忘光啦,主要是沒有實踐,這一次決定自學完後,在這裡在復習一遍增強自己的記憶和理解程度。
一、基本內置類型
C++語言內置了一些數據類型,主要有兩大類: 整型和浮點型。
整型又有: bool型、char型、wchar_t型、short型,int型,long int型。
浮點型有: float型, double型、long double型(擴展雙精度型)。
我們知道不同的數據類型決定了不同的內存占用bit和可以進行的操作。
1、bool型
bool型是C++語言擴展的類型,在C語言裡面是沒有bool類型的,其取值為兩個值: false 和 true。
值得注意的是:bool類型的兩個取值都是用小寫的字母表示的,這一點需要注意。
在C++中如果一個bool型的對象取值為 false,就表示邏輯結果為假; 如果bool型對象的取值為true
就表示邏輯結果為真。
Exp:
bool bVar; bVar = false; if(bVar) { std::cout<<"It is true"<<std::endl; } else { std::cout<<"It is false"<<std::endl; }
這樣就會執行 else分支的語句,輸出: It is false。
C++繼承了C語言的特性: 如果一個表達式的值為零,則邏輯結果為假; 如果一個表達式的值非零,則邏輯結果
為真。
要點1: 在C++中有些表達式其邏輯結果可能不是那麼容易判定為0還是非0, 這樣就很難判定其邏輯結果的真假,
需要引起注意。
例如: std::cin<<x; 如果輸入流讀到文件的結尾,那麼返回邏輯結果就為假, 如果還沒有讀到文件的結尾,那麼
其返回結果就為真。
要點2: bool類型變量在內存中需要1個字節表示。
bool型變量可以進行與、或、非的邏輯運算,這些在運算符的時候討論。
2、字符型
C++提供兩種不同位寬的字符型類型:char、wchar_t
char型占用8bit, wchar_t占用16bit(用於表示寬字符集的字符)。
char型字符字面值是用單引號引起來的字符,如:
'A', 'b', '"'(雙引號)。
wchar_t型字符字面值也是用單引號引起來的字符,但是需要在前面加上字幕L, 如:
L'B', L'C', L'b', L'"'(雙引號)。
C++和C語言一樣提供了一些其他的方式來表示字符字面值。 主要有三種方式: 利用8進制的數字來表示
字符字面值、利用16進制的數字表示字符字面值、轉義字符序列。
A: 8進制表示字符字面值
用反斜槓後面跟上8進制數字表示字符字面值, 如
\7 響鈴符 、 \12 換行符 、 \40 空格符等
B:16進制表示字符字面值
反斜槓後面跟上x或者X,然後在跟上16進制數字表示字符字面值, 如:
\x7 響鈴符、 \xC 換行符、 \x28 空格符等
C:轉義字符序列
在C++語言中,有些字符具有特殊的意義,就不能用單引號來表示,例如不可打印字符、反斜槓、控制字符、
單引號、雙引號、疑問號、換行符、水平制表符、垂直制表符、回車符、進紙符等。
\n 換行符
\t 水平制表符
\t 垂直制表符
\b 退格控制符
\r 回車符
\f 進紙符
\a 報警符,響鈴符
\\ 反斜槓
\? 疑問符
\' 單引號
\" 雙引號
3、整數型
short int、 int、和 long int型 。其中short int 、long int 可以省略int,用 short 和long表示。
short: 最小占用16bit
int:最小占用16bit
long:最小占用32bit
這這三種類型占用的位寬由系統決定, 而且目前一般int是 32bit寬度, 因此在設計程序的時候,不能
假設占用的bit數,而要用sizeof 操作符來求解占用的位寬。
整數型的字面值有三種表示方式: 十進制、八進制、十六進制。
例如: 20 十進制
024 八進制 ,前面用前導0開始表示這是一個八進制整數字面值
0x14 十六進制,前面用前導0x或者0X開始表示這是一個十六進制整數字面值。
整數型數有正數和負數之分; 能表示大於、小於和等於0的整數型稱為有符號整型,用signed表示;
不能表示小於0的整數類型為無符號型(表示的數大於或者等於0),用unsigned表示。
默認整數字面值是有符號的int型, 可以在整數字面值後面加上修飾的字符改變整數字面值的類型。
可以添加的修飾符有: u/U 、 l/L . 例如:
20u: 無符號int型,
20L: 有符號長整型
20UL: 無符號長整型
要注意的是: 整數字面值沒有short類型,這個需要注意。
4、字符串字面值
連續的字符序列在C++中有一個叫法: 字符串字面值。 字符串字面值就是用雙引號括起來的連續字符序列。
Exp:
字符串: "I am a C++ fresh man"
上面就是一個字符串字面值。
C++的字符串字面值繼承了C語言的特性,會自動在字符串的字符序列後面加上一個 '\0' 的字符,因此在
內存中會多占用1個字節。
對於wchar_t 類型的字符串字面值同樣會占用對一個字符需要的空間,就是: 2byte。
字符串中有一個特別需要注意的字符就是: %,這個字符需要引起大家的注意。
如果你是調用C語言的標准庫printf()函數輸出的話,那麼在輸出"%%" 時只會輸
出一個 %; 而如果用cout的話,則會輸出兩個 %%。
要點: 字符串字面值的連接, 兩個以空格、制表符、換行符分隔的兩個字符串字面值會連接成一個字符串字面值。
例如:
std::cout<<"abcdefg"
"12345678"
"volcanol";
這個輸出就相當於:
std::cout<<"abcdefg""12345678""volcanol";
也相當於:
std::cout<<"abcdefg12345678volcanol";
這個是比較特殊的一個特性,在C語言中也可以這樣,一般用的比較少。
5、浮點型
浮點型有三種: float、double和long double。三種類型的區別是占用的有效位數不一樣。
float 32bit, 有效位為6位小數
double 64bit, 有效位為10位小數
long 64bit, 最小有效位為10位小數
浮點型字面值有兩種表示方法: 十進制和科學計數法。
1. 十進制的double型字面值
1.e0 科學計數法的double型字面值。
默認的浮點數字面值為double類型。如果要顯示的設置為float型,就需要在字面值後面加上一個f或者F。
例如:
3.14F, 2.f 都是float型的浮點型字面值。
要點: 也許大家注意到了上面的1. 和 2.f , 這裡如果出現了小數點,即使後面沒有小數那麼也是浮點型
數據,這一點通常大家可能會遺忘。
暫時說這麼多,待續......
include 文件 <inttypes.h> 提供有助於使代碼與顯式指定大小的數據項兼容(無論編譯環境如何)的常量、宏和派生類型。它包含用於處理 8 位、16 位、32 位和 64 位對象的機制。該文件是新的 1999 ISO/IEC C 標准的一部分,文件內容反映了導致它包含在 1999 ISO/IEC C 標准中的建議。文件即將更新,以便完全與 1999 ISO/IEC C 標准一致。<inttypes.h> 提供的基本功能包括:定寬整型、諸如 uintptr_t 的有用類型、常量宏、限制、格式字符串宏。
16_t 和 me16應該是兩個int整型變量,只不過程序中兩變量間忘了加逗號,會出錯的。
沒定義變量類型~
size = strlen(name); 這句的size前面應該加int類型
改後是:int size = strlen(name);
printf("well,%s, your volum is %.2f cubic feet.\n",letters); 這句的letters改成name,後面還要加“, volume”
改後是:printf("well,%s, your volum is %.2f cubic feet.\n",name,volume);