C 學習筆記之資料型別(1)整型 浮點型 字串

2021-08-15 21:55:42 字數 3657 閱讀 8229

自學c++有時總會提不起幹勁,擱置幾個月後又會忘記之前比較重要的點,因此我開了這個學習筆記系列,希望在自己的學習過程中能督促我自己的學習,同時遇到問題時希望可以借助該系列部落格複習、提醒,也希望能幫助一些其他的c++學習者。1.

浮點型(float type)

c-串與string

c++中的資料型別,既有語言既定的內部資料型別(inner types),也有程式設計師自定義的外部資料型別。其中,內部資料型別有:

int 、 char、 bool、float 、double 、

加入陣列、指標、引用等可以得到基於上述資料型別的變異型別:

int(陣列) 、char*(指標)、 double&(引用)、

內部資料型別及其變異構成了c++的基本資料型別(base types)。

程式設計師自定義的資料型別主要是指使用class構造的資料型別。此外,enum、union、struct也能定義純空間意義上的資料型別。

在計算機內部,都使用二進位制補碼的形式表示整數,正數的補碼等於原碼,負數的補碼等於原碼「取反加一」。

另外,整型數的表示範圍、編譯器與整型的長度的關係,整數的字面值(integer literals),整數的算術運算基本與c的一致,就不贅述了。

基本與c一致

基本與c一致。

注意:列舉符一旦確定不能改變,常常代替整數常量使用,可以起到更好的效果。

是c中沒有的資料型別,不過,可以理解為:

enum bool; //只是舉例子,使用時不用定義

用來表示邏輯的真假,輸出預設為整數1或0,如果想要輸出 false 和 true,可以使用輸出控制符 「boolalpha」。

十進位制的浮點數可以用科學計數法表示,由有效值和階組成,如365.2可以表示為

0.3652∗10

3 0.3652∗10

3。3652為有效值,指數3為階。小數部分稱為尾數。為了統一尾數和有效值,有必要將浮點數規格化,即寫成小數點前不含有效數字,小數點後第一位由非零數字表示。如365.2規格化為

0.3652∗10

3 0.3652∗10

3。 十進位制浮點數轉換為二進位制浮點數時,整數使用「除2取餘法」,小數部分使用「乘2取餘法」。二進位制的規格化是要使得該數的有效值介於1和2之間,例如:

0.8125

=0.1101(2

)=1.101∗2

−10.8125

=0.1101(2

)=

1.101∗2

−1

。 浮點數的具體儲存方式以及不同浮點型別的表示範圍不在此贅述。2.

c-串是從c中沿襲過來的,稱為c-字串。c-串是以乙個全0位位元組作為結束符,c-串也可以稱為asciiz串(即ascii字串行加上尾巴zero)。因此,c-串的空間長度為字串長度加1。c-串的型別為char*(字元指標)

c++中對c-串的操作和c類似,通過標頭檔案string.h3.中的函式實現對c-串的複製(strcpy)、比較(strcmp)、連線(strcat)、倒置(strrey)、設定(strset)以及查詢(strstr 和 strchr)。

string是一種自定義的型別,可以方便的執行c-串所不能的一切操作。由於string的處理空間占用是自動的的,需要多少就用多少,不像字串要時刻擔心是否會有溢位甚至記憶體洩漏的問題。

string a, s1 = "hello ";

string s2 = "world!";

a = s1; //複製

cout << (a == s1 ? "" : "not") << "equal \n"; //比較

cout << a + s2 << endl; //連線

reverse(a.begin(), a.end()); //倒置

cout << a << endl;

cout << a.replace(0, 9, 9, 'c') << endl; //設定

cout << (s1.find("ell") != -1 ? "" : "not") << "found\n"; //查詢串

cout << (s1.find('c') != -1 ? "" : "not") << "found\n"; //查詢字元

文字的輸入可以通過迴圈讀入將內容送到變數中,知道讀不到資料(緩衝區讀完,並且沒有資料接續,則流狀態程式設計false):

for (string s; cin >> s; )

cout << s << " ";

cout << endl;

for (char a[10]; cin >> a;)

cout << a << " ";

cout << endl;

cin>>

的讀入方式總是將前面的空格(包括空格、回車、製表符等)濾掉,當遇到空格時結束本次輸入。也可以通過getline將其一次性地輸入:

string s; //單次輸入,重複輸入需在外部加迴圈結構

getline(cin, s);

cout << s << endl;

或:char a[40];

cin.getline(a, 40);

cout << a << endl;

getline總是將行末的回車符濾掉。如果輸入有許多行,且航中夾雜著其他型別的資料,借助getline然後在逐個分解航中的資料是非常簡明的。

當乙個檔案有若干行,不知道每行中有幾個整數,要求輸出每行的整數和,該如何實現呢?

由於cin>>不能辨別空格和回車的差異,因此只能用getline逐行讀入,但在分離若干個整數變數時則顯得很吃力。這時,使用string流是乙個好的方法:

int main()

}

istringstream 是輸入string流,在標頭檔案sstream中說明,該語句類似檔案流操作,只不過建立sin流時,引數為string物件,將string流中輸入整數到a中,直到最後乙個整數。

getline函式返回的我是流狀態,可以用來判斷檔案是夠還有資料行可讀。

string的方便性和統一性遠超c-串,可以極大地簡化對資料的操作。

教材:c++程式設計教程(清華大學出版社第二版)。 ↩

詳細可查閱教材p77。 ↩

標準c++中,iostream標頭檔案中已經巢狀包含了該標頭檔案,因此可以省略#include< string.h >指令。 ↩

Swift資料型別之整型和浮點型 備

swift提供8 16 32 64位形式的有符號及無符號整數。這些整數型別遵循c語言的命名規約,我歸納了swift中的整型 整型示例 print uint8 range uint8.min uint8.max print int8 range int8.min int8.max print uint...

資料型別之整型 浮點型 字串 列表

一 整型int 基本使用 1 用途 記錄年齡 等級 年等證書相關 2 定義方式 age 18 age int 18 資料型別轉換 可以將純數字的字串轉換成整型 n int 12121212 print n,type n 3 常用操作 內建的方法 數 算符 比較運算 該型別總結 存乙個值 不可變 1 ...

C語言之資料型別(整型 符號變數以及浮點)

整型包括短整型 整型和長整型,同時,這些型別又分為有符號型和無符號型。符號變數可以與整型相互轉換。各型別變數長度如下表 型別範圍 長度unsigned char 0 255 8位 signed char 127 127 8位 signed short int 32767 32767 16位unsig...