整型常量
整数常量是直接在程序中使用的数字,如123。默认情况下,这些数字被视为int,但
你可以通过U 和L 修饰符进行更多的限制(见下文)。通常情况下,整数常量默认为十进制,
但可以加上特殊前缀表示为其他进制。
进制 | 例子 | 格式 | 备注 |
---|---|---|---|
10(十进制) | 123 | 无 | 示例 |
2(二进制) | B1111011 | 前缀'B' | 只适用于8 位的值(0 到255)字符0-1 有效 |
8(八进制) | 0173 | 前缀”0” | 字符0-7 有效 |
16(十六进制) | 0x7B | 前缀”0x” | 字符0-9,A-F,A-F 有效 |
小数是十进制数。这是数学常识。如果一个数没有特定的前缀,则默认为十进制。
二进制以2 为基底,只有数字0 和1 是有效的。
示例
101 //和十进制5 等价(1*2^2 + 0*2^1 + 1*2^0)
二进制格式只能是8 位的,即只能表示0-255 之间的数。如果输入二进制数更方便的话,你可以用以下的方式:
myInt = (B11001100 * 256) + B10101010; // B11001100 作为高位。
八进制是以8 为基底,只有0-7 是有效的字符。前缀“0”(数字0)表示该值为八进制。
0101 // 等同于十进制数65 ((1 * 8^2) + (0 * 8^1) + 1)
警告:八进制数0 前缀很可能无意产生很难发现的错误,因为你可能不小心在常量前加了个“0”,结果就悲剧了。
十六进制以16 为基底,有效的字符为0-9 和A-F。十六进制数用前缀“0x”(数字0,字母爱克斯)表示。请注意,A-F 不区分大小写,就是说你也可以用a-f。
示例
0x101 // 等同于十进制257 ((1 * 16^2) + (0 * 16^1) + 1)
U & L 格式
默认情况下,整型常量被视作int 型。要将整型常量转换为其他类型时,请遵循以下规则:
'u' or 'U' 指定一个常量为无符号型。(只能表示正数和0)例如: 33u
'l' or 'L' 指定一个常量为长整型。(表示数的范围更广)例如: 100000L
'ul' or 'UL' 这个你懂的,就是上面两种类型,称作无符号长整型。例如:32767ul