* 標題中的常數指 literal ,若有更好的中文名稱請提供 *
字串簡單來說就是一串文字,如同 code::blocks 內建範本中的 "Hello world!" 一樣。當然也可以打 "XDDD" ,那麼在 printf / cout 時就會出現 XDDD 而非 Hello world!
基於要輸入鍵盤上沒有或是特殊功能的字元,有些符號的輸入規則改變,即反斜線 \ ,其意義有點像特殊命令,讓後面一個字元發生變化:
- 換行:\n
- Tab:\t
- 回到行首:\r
- backspaace:\b
- 結尾字元:\0
- 或是要以16進位制的方式輸入:\x0a (\x+16進位數字)
- 反斜線:\\
在c裡要被稱為字串,最重要的是
結尾字元,無論是 printf 還是 cout ,都是看到結尾字元才會停止輸出。
字串又用於指定輸入輸出的格式(如 scanf / printf),所以有另一個符號有特殊規則:%
如果要想要將值輸出成
- 整數(32 bits):%d
- 正整數(32 bits):%u
- 位數更高的整數(64 bits):%lld, %I64d (一般來說 %lld 即可)
- 位數更高的正整數(64 bits):%llu, %I64u (一般來說 %llu 即可)
- 8進位正整數:%o
- 16進位正整數:%X (A~F) 或 %x (a~f)
- 浮點數:%f (單精度會自動轉雙精度)
- 比雙精度更高:%Lf
- 字元:%c
- 字串:%s
- %:%%
- 位址:%p (a~f, 沒大寫)
- printf 使用:printf("[你想要輸出的格式]...",[你的變數/常數]...);
- 例如 printf("%d%d\n",1,2);
之所以說"輸出成"是因為 C/C++ 是種可以直接看到記憶體內容的語言,比如說 a 的十進位編碼是 97 ,那麼想要印出 a 也可以: printf("%c",97);
最後就是,字串裡面放註解是無效的,字串裡的註解就是字串的一部份。
補充 printf 進階:
1. printf
a. 指定長度,例如 %5d ,數字不滿5個字元在左邊補空白;或如%-5d,數字不滿5個字元在右邊補空白。
b. 指定長度的部分可以是個變數,例如 %*d ,填參數到 printf 時先填長度再填要印出的數值
但在 scanf 中是略過的意思
2. long double
en.wikipedia.org/wiki/Long_double
3. cout 也可以設定格式,但是我不熟
若有 說明不詳盡/錯誤/詞不達意 的地方可以留言提出。