整數常數
整數常數是可以在草稿碼中直接使用的數字,像是 123
;預設這些數字會被當做 int 資料型別,但是你可以將其更改為 U 和 L 型別 (在後面的說明中會提到)。
一般來說,整數常數前面若沒有標示特別的符號,將被視為十進制整數。
進制 | 範例 | 格式 | 備註 |
10 (decimal) | 123 | 無 | |
2 (binary) | B1111011 | 開頭為 ‘B’ | 只能使用8位元 (0 到 255) 有效字元只有 0 跟 1 |
8 (octal) | 0173 | 開頭為 ‘0’ | 有效字元只有 0 到 7 |
16 (hexadecimal) | 0x7B | 開頭為 “0x” | 有效字元 0 到 9、A 到 F、a 到 f |
Decimal 是十進制,整數常數沒有任何的前置符號。
例如:
101 // 相當於十進制 101 ((1 * 10^2) + (0 * 10^1) + 1)
Binary 是二進制,有效字元只有 0 與 1。
例如:
B101 // 相當於十進制的 5 ((1 * 2^2) + (0 * 2^1) + 1)
二進制格式只能在 8 位元上運作,介於十進制的 0 到 255 (B0~B11111111)之間,如果你想輸入 16 位元的話可以參照下面的處理方式:
myInt = (B11001100 * 256) + B10101010; // B11001100 是高位元
Octal 是八進制,有效字元有 0 到 7,它的前置符號是 ”0”。
例如:
0101 // 相當於十進制的 65 ((1 * 8^2) + (0 * 8^1) + 1)
警告:
它可能造成 debug 時很難被找到問題所在,因為它的前置符號是 0,會和數字串混在一起,編譯器會無意間的將你的常數當作八進制。
Hexadecimal (或 hex) 是十六進制,有效字元是 0 到 9、A 到 F,A 等於10,一直往上加,直到 F 等於 15,十六進制的前置符號是 ”0x”,而 A 到 F 的字元也可以輸入小寫。
例如:
0x101 // 相當於十進制的 257 ((1 * 16^2) + (0 * 16^1) + 1)
U & L 格式
預設上,一個整數常數被視為 int 型別,對程式開發者來說往往造成一些限制,為了讓整數常數可用不同型別來表示(例如:有符號、無符號、長整數等等),請看下面 U & L 的使用說明:
'u'
或者'U'
作為常數的附加符號時會被視為 unsigned 資料格式,例如:33u
'l'
或者'L'
作為常數的附加符號時會被視為長 (long) 資料格式,例如:100000L
'ul'
或者'UL'
作為常數的附加符號時會被視為 unsigned long 資料格式,例如:32767ul
See also
- constants
- #define
- byte
- int
- unsigned int
- long
- unsigned long
本頁由熱血青年 LBU 譯自英文版。
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.