c++預定了一組數值數據類型。可以用來表示整型,浮點型和單個字符。此外還預定了表示字符串的字符數組。
1:字符型char:通常用來表示單個字符和小整數。它可以用一個機器字節來表示(即8位表示)。
2:整型int  短整型short ,長整型long分別表示不同長度的整數值。典型的情況下:short用半個字表示(即16位)。int 用一個字表示(即32位。)long用一個或者兩個字表示。(在32位的機器中通常int 和long的通常長度相同。)
3:浮點型flont ,雙精度double和長雙精度。長雙精度long double 。分別表示單精度浮點數。雙精度浮點數和擴展精度的浮點數。典型的情況下,float用一個字表示。double用兩個字表示,long double用三個或者四個字表示。
char ,int, float , long 稱為整值類型(intergral  type)。整值類型可以有符號也可以沒有符號。在有符號的類型中。最左邊的位是符號為。余下的位代表數值。。在無符號的類型中,所有的位表示數值位。
如果符號為被設置為1。那么數值被解釋為負數。如果符號為被設置為0。那么數值位被解釋為正數。
一個8位有符號的char 表示-128---127之間的值。而一個無符號的char則表示0--255之間的值。
當一個值。例如1。出現在程序的時候,我們稱它為文字常量。稱他為“文字”是因為我們只能以他的值的形式來指代它。稱之為常量是因為它的值不能被改變。每個文字都有相應的類型。文字常量是不可尋址的(nonadressable)。盡管他的值也被存儲在機器的某個內存之中。但是我們沒有辦法來尋找它的地址。
整數文字常量可以被寫成十進制。八進制,十六進制的形式。(這不會改變該整數的位序列)。例如:20可以寫成以下的方式:
20/////////十進制形式
024/////八進制
0x14////十六進制。
在整型常量前面加上0。該值將被解釋成一個八進制數。而在整形常量的前面加上0x,則該值將會被解釋成十六進制數。
在缺省的情況下,整形常量被當作一個int的有符號的整數。
我們可以在一個文字常量的后面加上一個“L”或者"l",將其指定為long類型。
類似的,我們在文字常量的后面加上“u”或者“U”。表示一個無符號的數。
此外,我們還可以指定無符號long類型的數。例如: 1UL.
單詞true 和false是bool型的文字常量。
可以打印的文字常量可以用單引號''括起來例如:
'A','S'...等。
不能夠直接打印的字符,單引號,雙引號,和反斜杠就i可以用轉義序列來來表示(轉移序列用反斜杠來開頭)。
\n 換行符
\t水平制表符
\v垂直制表符
\b退格符
\r回車鍵
\a響鈴建
\\反斜杠鍵
\?問號
\'單引號
\""雙引號
另外字符文字前面可以加上“L
例如:L'a'
這個稱為寬字符文字,類型為wchar_t.寬字符常量用來支持某些語言字符的集合。例如:漢語,日語等
這些語言中的某些字符不能用單個的字符來表示。
字符串常量由零個或者許多個由雙引號括起來的 字符
不可以打印的字符由相應的轉移序列來表示,而一個字符串文字可以擴展到多行。在一行的最后加上一個\,表示字符串文字在下一行繼續。
如:"fdfdf fdfdf\dfdfdfsdffdfdfdf"
字符串文字的類型是常量字符數組。字符文字本身和 編譯器加上的表示結束的(NULL),字符構成。
例如:'a'表示一個單個的字符a
"a"則表示一個字符a和一個空字符,
空字符是c和c++用來標記字符串結束的符號
正如寬字符文字。L'a'

也有寬字符串文字L"aaaaaaa"
寬字符串文字的類型是常量的寬字符數組。他也有一個等價的寬空字符作為結束的標記。
如果兩個字符串和或者寬字符串在程序中相鄰。c++就會把它們連接起來。并且在最后加上一個空字符,
例如:"one" "two" 則輸出的結果為onetwo.
如果把一個字符串常量和一個寬字符串常量鏈接起來,那么結果會是如何呢?
"aa" L"SSS"
結果是未定義(undefine)------即沒有這種這兩種不同類型鏈接標定義行為。
使用未定義的程序被稱為是不可以移植的。
雖然程序可以在當前的編譯器下可以執行,但是不能保證相同的程序在不同的編譯器下,或者在當前的白一起的以后的版本中,還能夠正確的編譯通過。
在本來可以正常運行的程序中來尋找這些是件很令人心煩的事情,所以我們建議不要使用未定義的程序特征。