“Integer constants(整型常量)”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
(以“整数常量是直接在程序中使用的数字,如123。默认情况下,这些数字被视为int,但你可以通过U和L修饰符进行更多的限制(见...”为内容创建页面)
 
第3行: 第3行:
 
 通常情况下,整数常量默认为十进制,但可以加上特殊前缀表示为其他进制。
 
 通常情况下,整数常量默认为十进制,但可以加上特殊前缀表示为其他进制。
  
<pre style="color:red">
+
<pre style="color:blue">
 
 进制 例子 格式 备注
 
 进制 例子 格式 备注
10(十进制) 123 无
+
10(十进制)         123 无
2(二进制) B1111011 前缀'B' 只适用于8位的值(0到255)字符0-1有效
+
2(二进制)         B1111011 前缀'B' 只适用于8位的值(0到255)字符0-1有效
8(八进制) 0173 前缀”0” 字符0-7有效
+
8(八进制)         0173 前缀”0” 字符0-7有效
16(十六进制) 0x7B 前缀”0x” 字符0-9,A-F,A-F有效
+
16(十六进制)         0x7B 前缀”0x” 字符0-9,A-F,A-F有效
 
</pre>
 
</pre>
  

2017年9月10日 (日) 16:38的版本

整数常量是直接在程序中使用的数字,如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