天天看點

c++第六課 c++語言常用類型

c++教程總目錄

第一課:c++第一課 輸出“Hello word”

第二課:c++第二課 輸出自定義字元圖形

第三課:c++第三課 關于代碼的一些知識

第四課:c++第四課 定義int型變量、變量指派與輸出

第五課:c++第五課 輸入

第六課:c++第六課 c++語言常用類型

第七課:c++第七課 加法算數運算

第八課:c++第八課 運算原理

未完待續……

c++第六課 c++語言常用類型

上節課我們學習了int型變量的輸入,可以寫出一個簡單的人機互動界面。這節課我們學習一下不同類型,制作出更有意思的小程式。

在c++語言中,有好多種類型。我們學習的int型是最基本的變量類型,也是最常用的類型之一,是以請先學好int型哦!

數字類型

int型用來定義數字變量,長度是有限制的。

先不聊c++,說點别的。

生活中我們經常用到電腦,國中生應該很喜歡用。但是電腦也有一點不太好,就是算不了太大的數。比如算一個:99999999999999999999999999999999999999999999999999乘上

99999999999999999999999999999999999999999999999999

結果會是:

錯誤

這是因為電腦最高位溢出造成的。比如一個變量隻能存個位數,你非要算個9+1,你說電腦怎麼辦?隻能告訴你:錯誤。

好了,回到c++。

int型變量的範圍是-2147483648~2147483647

也就是說,在一個加法運算程式中,你不能讓兩個變量加起來大于2147483647或小于-2147483647。如果超出這個範圍,根據我的經驗,會輸出2147483647。

當然,你輸出的也有可能不是這個值,可能是個定值,就是說每次運作這個程式輸出的這個亂值可能都是一樣的;也可能是變化的,每次運作的值不一樣。

那就有人說了:這哪行啊?不夠我使的!

是以有幾種更長的類型:long long、long long ing、unsigned long long

現在就來介紹一下。

1.long long長整型

long long的資料範圍:

-9223372036854775807~9223372036854775807

嗯,挺大的。

不過不算太大,比如要寫一個計算最大的素數(有沒有我不知道)的程式,這麼點也就剛夠做做熱身運動。

對于普通的程式來講,這些足夠了。

定義變量的方式與ing型完全一樣:

自己可以試試輸入。

2.long long int長整型

這個類型與long long類似,有些編譯器會編譯不通過。

它與long long有什麼差別我不知道,希望有人知道告訴我,用起來與long long沒啥差別。

3.unsigned long long無符号長整型

什麼叫無符号?

這個問題在我剛開始學的時候一直搞不清楚。

關于這個問題,寫個算式解決:

1+1=2

其中的符号有兩個“+”,一個“=”(每個“1”各一個,第一個“1”省略)

再寫一個long long的負數資料範圍:

-9223372036854775807

其中的符号是“-”。

那無符号就是:

9223372036854775807

剛才那個國小一年級算式就是:

112

沒錯吧?

但是這明明是把long long型砍掉一半,是以另一半也不能閑着,那就加到正數的範圍上來吧!

是以unsigned long long的資料範圍是:

9223372036854775807*2+1=18446744073709551615

加一是因為中間有個0。

同樣道理,unsigned int的資料範圍是:

2147483648*2+1=4294967297

注意,沒有unsigned long long int型!

short短整型

鑒于剛才的學習,就不廢話了。

資料類型:-32768~32767

讀者:這麼少的類型鬼才用!誰這麼閑得慌!

的确,這種類型很少用。但有一部分程式很喜歡這個類型。關于這個以後再介紹,我們現在用不到它。

float 單精度浮點型

浮點型,也就是帶浮點的數,那帶浮點的數不就是小數嘛!

你會發現,前面的資料類型都沒法存小數,要是需要求個圓周率,你這程式就不夠看了,是以,我們來學習一下浮點型。

定義方式都相同,就不廢話了。

你看,之前的類型都是有資料範圍的,float也不例外,它的資料範圍分為指數部分和尾數部分。這裡主要看一下尾數部分。

float小數點後可以存7位有效資料,如果超出這個範圍float則四舍五入處理。

關于整數部分,不能存太大的數,比short大點,比int少很多。具體多少我不知道,知道的大神告訴我!

如果整數部分超過範圍,就會用科學計數法表示。

看一下下面的程式:

#include<iostream>
using namespace std;
int main()
{
	float a=3.1415926535;
	cout<<a<<endl;
	return 0;
}
           

輸出結果:

c++第六課 c++語言常用類型

再輸入一個大點的數:

c++第六課 c++語言常用類型

double雙精度浮點型

這種類型可以存儲16位尾數,整數部分也比float大。

比賽時建議都用double型,保險。

long double C99新增:多精度浮點型

傳統c++裡沒有這個,在C99裡加上的。這種類型沒有給出确切的資料範圍,它的範圍取決使用的編譯器。

不過我們可以通過以下程式得知它的資料範圍:

#include<iostream>
using namespace std;
int main()
{
	cout<<sizeof(long double);
	return 0;
}
           

你不用管什麼意思,編譯運作,看看結果:

c++第六課 c++語言常用類型

我用的這個編譯器定義的long double類型的長度是12位元組。12位元組是說整數部分的位元組數加上尾數部分的位元組數一共12位元組。一位元組等于8位,那麼12位元組就是12*8=96位。

不過我們不知道它的整數或尾數部分到底是幾位。

關于數字類型就到這裡,定義方式都是一樣的!

字元類型

先給大家看一段程式:

#include<iostream>
using namespace std;
int main()
{
	int a;
	cin>>a;
	cout<<a<<endl;
	return 0;
}

           

編譯運作,輸入“abc”

你會發現它什麼也不輸出,或者輸出0

這是因為輸入的是字元。

我們定義的是int型,屬于數字類型,字母不是數字,是以a變量裡什麼也不是。

1.char字元類型

char類型是一個最基本的字元類型。定義方式和數字類型相同:

比如這樣:

#include<iostream>
using namespace std;
int main()
{
	char a;
	cin>>a;
	cout<<a<<endl;
	return 0;
}
           

輸入“a”,看看運作結果:

c++第六課 c++語言常用類型

現在輸入“abc”,再看看運作結果:

c++第六課 c++語言常用類型

為什麼隻輸出“a”呢?明明輸入的是“abc”啊!

因為字元類型變量“a”隻能存儲一個字元。多個字元的情況下,隻能存儲第一個字元。

注意,char類型無法存儲漢字!

接着輸入,輸入“1”,運作結果如下:

c++第六課 c++語言常用類型

但你輸入“123”,它隻能輸出“1”

這裡的“1”不是數字“1”,而是字元“1”,數字“1”和字元“1”是不一樣的!關于哪不一樣我們以後再講,否則會亂套。

2.string字元串類型

字元串,就是由字元穿起來的“串”。要是你非常熱愛字元串,說不定下次吃燒烤時會說:老闆,給我來兩串字元串!

為解決上面沒法輸入“abc”的情況,我們開始學習字元串。string類型的定義方式與上面各類型相同:

你會發現“string”不是一個關鍵字。但這并不意味着變量可以叫做string。要是看不明白,看下面一行代碼:

這是不行的!

好了,看下面的代碼:

#include<iostream>
using namespace std;
int main()
{
	string a;
	cin>>a;
	cout<<a<<endl;
	return 0;
}
           

編譯運作,輸入“abc”。

c++第六課 c++語言常用類型

再運作,輸入“武漢加油!中國加油!”

c++第六課 c++語言常用類型

是以string類型可以輸入漢字。

邏輯型

bool布爾類型

bool類型是用來判斷真或假的。0時為假,否則為真。

這個在比賽中不常用,因為int性變量也可以勝任這一工作。在開發項目中會用到,可以使程式清晰易懂。

看個例程:

#include<iostream>
using namespace std;
int main()
{
	bool a=true,b=false;
	cout<<a<<' '<<b<<endl;
	return 0;
}
           

運作結果:

c++第六課 c++語言常用類型

也可以這樣寫:

#include<iostream>
using namespace std;
int main()
{
	int a=1,b=0;
	cout<<a<<' '<<b<<endl;
	return 0;
}

           

或者這樣:

#include<iostream>
using namespace std;
int main()
{
	int a=true,b=false;
	cout<<a<<' '<<b<<endl;
	return 0;
}
           

都行。

關于bool類型我們以後再說!

由于作者水準有限,文章中難免有誤,請大神們給出指正!

上一課:c++第五課 輸入

下一課:c++第七課 算數運算

繼續閱讀