直接分配二进制值和十六进制值时,可以分别执行以下操作:
uint8_t val1 = 0b10101;
uint8_t val2 = 0xFF;
Run Code Online (Sandbox Code Playgroud)
什么是0b和0x是什么意思?特别是前面的0。您可以使用其他值代替0吗?
另外一个有趣的问题是,在“ b”和“ x”的地方还有哪些其他字符?以八进制为例吗?
在C ++标准中,[lex.icon]上的语法生成总结了您可以创建的所有整数文字。
整数字面量:
二进制文字整数后缀opt
八进制文字整数后缀opt
十进制文字整数后缀opt
十六进制文字整数后缀opt
二进制字面量:
0b二进制数字
0B二进制数字
二进制字面量' 选择二进制数位
八进制字面量:
0
八进制字面' 选择八进制数字
十进制字面量:
非零数字
十进制文本“ 选择位
十六进制字面量:
十六进制前缀十六进制数字序列
二进制数字:
0
1个
八位数字:
0 1 2 3 4 5 6 7
非零数字:
1 2 3 4 5 6 7 8 9
十六进制前缀:
0x 0X
十六进制数字序列:
十六进制数字
十六进制数字序列“ 选择十六进制数字
十六进制数:之一
0 1 2 3 4 5 6 7 8 9
abcdef
ABCDEF
我们可以从语法中得出,整数文字有四种类型:
0b或0B。0x或0X。八进制数字的前导0可以被视为“八进制”中的“ O”。其他前缀使用前导零来标记不应被解释为十进制的数字的开头。“B”是用于直观地“ b inary”,而“X”是“他X adecimal”。