c++預(yù)定了一組數(shù)值數(shù)據(jù)類型??梢杂脕肀硎菊?,浮點(diǎn)型和單個(gè)字符。此外還預(yù)定了表示字符串的字符數(shù)組。
1:字符型char:通常用來表示單個(gè)字符和小整數(shù)。它可以用一個(gè)機(jī)器字節(jié)來表示(即8位表示)。
2:整型int 短整型short ,長(zhǎng)整型long分別表示不同長(zhǎng)度的整數(shù)值。典型的情況下:short用半個(gè)字表示(即16位)。int 用一個(gè)字表示(即32位。)long用一個(gè)或者兩個(gè)字表示。(在32位的機(jī)器中通常int 和long的通常長(zhǎng)度相同。)
3:浮點(diǎn)型flont ,雙精度double和長(zhǎng)雙精度。長(zhǎng)雙精度long double 。分別表示單精度浮點(diǎn)數(shù)。雙精度浮點(diǎn)數(shù)和擴(kuò)展精度的浮點(diǎn)數(shù)。典型的情況下,float用一個(gè)字表示。double用兩個(gè)字表示,long double用三個(gè)或者四個(gè)字表示。
char ,int, float , long 稱為整值類型(intergral type)。整值類型可以有符號(hào)也可以沒有符號(hào)。在有符號(hào)的類型中。最左邊的位是符號(hào)為。余下的位代表數(shù)值。。在無符號(hào)的類型中,所有的位表示數(shù)值位。
如果符號(hào)為被設(shè)置為1。那么數(shù)值被解釋為負(fù)數(shù)。如果符號(hào)為被設(shè)置為0。那么數(shù)值位被解釋為正數(shù)。
一個(gè)8位有符號(hào)的char 表示-128---127之間的值。而一個(gè)無符號(hào)的char則表示0--255之間的值。
當(dāng)一個(gè)值。例如1。出現(xiàn)在程序的時(shí)候,我們稱它為文字常量。稱他為“文字”是因?yàn)槲覀冎荒芤运闹档男问絹碇复?。稱之為常量是因?yàn)樗闹挡荒鼙桓淖?。每個(gè)文字都有相應(yīng)的類型。文字常量是不可尋址的(nonadressable)。盡管他的值也被存儲(chǔ)在機(jī)器的某個(gè)內(nèi)存之中。但是我們沒有辦法來尋找它的地址。
整數(shù)文字常量可以被寫成十進(jìn)制。八進(jìn)制,十六進(jìn)制的形式。(這不會(huì)改變?cè)撜麛?shù)的位序列)。例如:20可以寫成以下的方式:
20/////////十進(jìn)制形式
024/////八進(jìn)制
0x14////十六進(jìn)制。
在整型常量前面加上0。該值將被解釋成一個(gè)八進(jìn)制數(shù)。而在整形常量的前面加上0x,則該值將會(huì)被解釋成十六進(jìn)制數(shù)。
在缺省的情況下,整形常量被當(dāng)作一個(gè)int的有符號(hào)的整數(shù)。
我們可以在一個(gè)文字常量的后面加上一個(gè)“L”或者"l",將其指定為long類型。
類似的,我們?cè)谖淖殖A康暮竺婕由?#8220;u”或者“U”。表示一個(gè)無符號(hào)的數(shù)。
此外,我們還可以指定無符號(hào)long類型的數(shù)。例如: 1UL.
單詞true 和false是bool型的文字常量。
可以打印的文字常量可以用單引號(hào)''括起來例如:
'A','S'...等。
不能夠直接打印的字符,單引號(hào),雙引號(hào),和反斜杠就i可以用轉(zhuǎn)義序列來來表示(轉(zhuǎn)移序列用反斜杠來開頭)。
\n 換行符
\t水平制表符
\v垂直制表符
\b退格符
\r回車鍵
\a響鈴建
\\反斜杠鍵
\?問號(hào)
\'單引號(hào)
\""雙引號(hào)
另外字符文字前面可以加上“L
例如:L'a'
這個(gè)稱為寬字符文字,類型為wchar_t.寬字符常量用來支持某些語言字符的集合。例如:漢語,日語等
這些語言中的某些字符不能用單個(gè)的字符來表示。
字符串常量由零個(gè)或者許多個(gè)由雙引號(hào)括起來的 字符
不可以打印的字符由相應(yīng)的轉(zhuǎn)移序列來表示,而一個(gè)字符串文字可以擴(kuò)展到多行。在一行的最后加上一個(gè)\,表示字符串文字在下一行繼續(xù)。
如:"fdfdf fdfdf\dfdfdfsdffdfdfdf"
字符串文字的類型是常量字符數(shù)組。字符文字本身和 編譯器加上的表示結(jié)束的(NULL),字符構(gòu)成。
例如:'a'表示一個(gè)單個(gè)的字符a
"a"則表示一個(gè)字符a和一個(gè)空字符,
空字符是c和c++用來標(biāo)記字符串結(jié)束的符號(hào)
正如寬字符文字。L'a'
寬字符串文字的類型是常量的寬字符數(shù)組。他也有一個(gè)等價(jià)的寬空字符作為結(jié)束的標(biāo)記。
如果兩個(gè)字符串和或者寬字符串在程序中相鄰。c++就會(huì)把它們連接起來。并且在最后加上一個(gè)空字符,
例如:"one" "two" 則輸出的結(jié)果為onetwo.
如果把一個(gè)字符串常量和一個(gè)寬字符串常量鏈接起來,那么結(jié)果會(huì)是如何呢?
"aa" L"SSS"
結(jié)果是未定義(undefine)------即沒有這種這兩種不同類型鏈接標(biāo)定義行為。
使用未定義的程序被稱為是不可以移植的。
雖然程序可以在當(dāng)前的編譯器下可以執(zhí)行,但是不能保證相同的程序在不同的編譯器下,或者在當(dāng)前的白一起的以后的版本中,還能夠正確的編譯通過。
在本來可以正常運(yùn)行的程序中來尋找這些是件很令人心煩的事情,所以我們建議不要使用未定義的程序特征。