用户工具

站点工具


reference:language:integerconstants

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

reference:language:integerconstants [2017/04/07 10:03] (当前版本)
行 1: 行 1:
 +====== 整数常量 ======
 +
 +整数常量是直接在程序中使用的数字,如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是有效的。
 +
 +**示例:**
 +<code cpp>
 +101  //​和十进制5等价 (1*2^2 + 0*2^1 + 1*2^0)
 +</​code>​
 +二进制格式只能是8位的,即只能表示0-255之间的数。如果输入二进制数更方便的话,你可以用以下的方式:
 +<code cpp>
 +myInt = (B11001100 * 256) + B10101010; ​   // B11001100 作为高位。
 +</​code>​
 +
 +八进制是以8为基底,只有0-7是有效的字符。前缀“0”(数字0)表示该值为八进制。
 +<code cpp>
 +0101    // 等同于十进制数65 ​  ((1 * 8^2) + (0 * 8^1) + 1) 
 +</​code>​
 +**警告:​**八进制数0前缀很可能无意产生很难发现的错误,因为你可能不小心在常量前加了个“0”,结果就悲剧了。
 +
 +十六进制以16为基底,有效的字符为0-9和A-F。十六进制数用前缀“0x”(数字0,字母爱克斯)表示。请注意,A-F不区分大小写,就是说你也可以用a-f。
 +
 +**示例:**
 +<code cpp>
 +0x101   // 等同于十进制257 ​  ((1 * 16^2) + (0 * 16^1) + 1)
 +</​code>​
 +===== U & L 格式 =====
 +
 +默认情况下,整型常量被视作int型。要将整型常量转换为其他类型时,请遵循以下规则:
 +  * '​u'​ or '​U'​ 指定一个常量为无符号型。(只能表示正数和0) 例如: 33u
 +  * '​l'​ or '​L'​ 指定一个常量为长整型。(表示数的范围更广) 例如: 100000L
 +  * '​ul'​ or '​UL'​ 这个你懂的,就是上面两种类型,称作无符号长整型。 例如:32767ul
 +
  
reference/language/integerconstants.txt · 最后更改: 2017/04/07 10:03 (外部编辑)