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)------即没有这种这两种不同类型链接标定义行为。
使用未定义的程序被称为是不可以移植的。
虽然程序可以在当前的编译器下可以执行,但是不能保证相同的程序在不同的编译器下,或者在当前的白一起的以后的版本中,还能够正确的编译通过。
在本来可以正常运行的程序中来寻找这些是件很令人心烦的事情,所以我们建议不要使用未定义的程序特征。