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

Mir*_*dhi 1 c microcontroller

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

这是代码:

// Global variables
static bool volatile radio_busy;
int xx = 0x0;
int yy = 0x0;
int zz = 0x1;
bool flag = 1;
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 5

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

所以该阵列{0x0, 0x1, 0xf, 0x42}由十进制值的0115(因为数字是0-9,和a-f等同于10-15)和66(从4 * 16 + 2)。

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

从您提供的代码片段来看,目的并不明确-它具有令人讨厌的通用变量名,这些变量名似乎没有任何有意义的指示,它们的用途是什么,这是未经培训的程序员的标志,他们似乎以某种方式认为大型变量名占用更多空间:-)


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

unsigned char *memLoc = 0xff00; // memory to modify.
unsigned char curr = *memLoc;   // get current.
curr = curr | 0x20;             // set ONLY b5, or with binary 00100000
*memLoc = curr                  // write it back.
Run Code Online (Sandbox Code Playgroud)