整数常量

整数常数是可以在草稿码中直接使用的数字,像是 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.