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;
}
輸出結果:
再輸入一個大點的數:
double雙精度浮點型
這種類型可以存儲16位尾數,整數部分也比float大。
比賽時建議都用double型,保險。
long double C99新增:多精度浮點型
傳統c++裡沒有這個,在C99裡加上的。這種類型沒有給出确切的資料範圍,它的範圍取決使用的編譯器。
不過我們可以通過以下程式得知它的資料範圍:
#include<iostream>
using namespace std;
int main()
{
cout<<sizeof(long double);
return 0;
}
你不用管什麼意思,編譯運作,看看結果:
我用的這個編譯器定義的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”,看看運作結果:
現在輸入“abc”,再看看運作結果:
為什麼隻輸出“a”呢?明明輸入的是“abc”啊!
因為字元類型變量“a”隻能存儲一個字元。多個字元的情況下,隻能存儲第一個字元。
注意,char類型無法存儲漢字!
接着輸入,輸入“1”,運作結果如下:
但你輸入“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”。
再運作,輸入“武漢加油!中國加油!”
是以string類型可以輸入漢字。
邏輯型
bool布爾類型
bool類型是用來判斷真或假的。0時為假,否則為真。
這個在比賽中不常用,因為int性變量也可以勝任這一工作。在開發項目中會用到,可以使程式清晰易懂。
看個例程:
#include<iostream>
using namespace std;
int main()
{
bool a=true,b=false;
cout<<a<<' '<<b<<endl;
return 0;
}
運作結果:
也可以這樣寫:
#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++第七課 算數運算