Integer constants(整型常量)

出自YFRobotwiki
在2017年9月10日 (日) 16:38由Allblue對話 | 貢獻所做的修訂版本

跳轉到: 導覽搜尋

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