在C中将全局变量设置为等于“ 0x0”怎么办?

时间:2019-10-21 01:38:38

标签: c microcontroller

我目前正在查看一些用C语言为微控制器编写的代码,我只是想弄清楚为什么某些变量设置为等于0x00x1。有人可以解释一下吗?

代码如下:

// Global variables
static bool volatile radio_busy;
int xx = 0x0;
int yy = 0x0;
int zz = 0x1;
bool flag = 1;

1 个答案:

答案 0 :(得分:5)

0x只是hexadecimal numbers(以16为底)的前缀,而不是默认的十进制(以10为底)。

因此,数组{0x0, 0x1, 0xf, 0x42}由十进制值0115组成(因为数字分别为0-9a-f等于10-15)和66(来自4 * 16 + 2)。

当人们打算对位模式而不是值进行操作时,人们通常会使用十六进制。(因为四位中完全包含一个十六进制数字)(a)

您提供的代码段中的意图并不明确-它具有令人讨厌的通用变量名称,对于它们的用途, no 似乎没有任何有意义的指示,这是未经培训的程序员似乎认为大变量名以某种方式占用了更多空间:-)


(a)例如,您可能需要执行以下操作来设置位b5(其中位从最高有效b7到最低有效{{1 }})将内存映射到b0的位置:

1