字面常量


您 可以在程式中寫下1、1.0、3.14159這樣的數值,這類數值稱之為「字面常量」(Literal constant),預設程式中若寫下一個整數值,例如1這個數值的話,預設它會是個int型態無正負號的數值,而如果您在程式中寫下1.0,3.14 等小數時,預設它會是double型態的數值,例如下面這個程式所顯示出來的大小分別是int與double的大小:

#include <iostream> 
using namespace std;

int main() {
cout << "sizeof(1): " << sizeof(1) << "\n";
cout << "sizeof(1.0): " << sizeof(1.0) << "\n";

return 0;
}

執行結果:
sizeof(1): 4
sizeof(1.0): 8


整數字面常量可以用8進位、10進位與16進位來表示,一般習慣使用10進位,如果您要使用8進位的字面常量,開 頭加上0就可以了,如果要使用16進位的 字面常量,開頭加上0x,例如下面的程式各顯示10進位制26的8進位與16進位寫法:

#include <iostream> 
using namespace std;

int main() {
cout << 26 << "\n"; // 10進位
cout << 032 << "\n"; // 8進位
cout << 0x1A << "\n"; // 16進位

return 0;
}

由於cout輸出整數值時,都會以10進位制顯示,所以上面的程式中三行陳述都會顯示26。

您可以在整數值之後加上L或l,表示該整數值要是long型態,因為l容易與數字1搞混,所以通常使用L,例如1L,您也可以指定為無號整數,可使用U或 u來指定,例如1U,L與U可以同時指定,例如1UL或1LU;對於浮點數的話,則可以在寫下浮點數值時以F或f表示數值要使用float型態,例如 3.14f,也可以使用科學記號,例如20000可以表示為2e4。

字元字面常量則以單引號來包括一個字元,例如'A'、'1'都表示一個字元字面常量,而有一些字元與C++中所使用的相同,例如"、'、\等,要在程式中 表現這些字元則要使用escape sequence,即\"、\'、\\,其它還有一些「不可見字元」,也要以escape sequence來表示,下表列出常用的escape sequence:

escape sequence 說明
\n 換行、新行(newline)
\t 水平定位點(horizontal tab)
\v 垂直定位點(vertical tab)
\b 退回一格(backspace)
\r 返回(carriage return)
\f 換頁(formfeed)
\a 嗶聲(alert bell)
\\ 倒斜線(backslash)
\? 問號
\' 單引號
\" 雙引號

您還可以使用escape sequence自行指定8進位字元編碼,指定的格式為\ooo,例如'\12'就是新行字元(ASCII中編碼12),'\062'則是字元'2'。

您可以使用endl這個C++內建的I/O控制器(manipulator),它會輸出newline字元,而避免直接使用escape sequence指定newline字元,例如:
cout << "Hello! World!" << endl;

在C++中如果以""來包括一串文字的話,即為字串字面常數,例如"Hello! World!"就是字串字面常數,字串字面常數由字元陣列組成,每一個字串最後會以一個null字元結束。

true與false也是字面常數,對應型態為bool。