在 C 中将全局变量设置为等于“0x0”有什么作用?

What does setting a global variable equal to "0x0" do in C?

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

代码如下:

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

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

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

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

您给出的代码片段的意图并不明确 - 它具有令人讨厌的通用变量名称,这些名称似乎没有关于它们用途的有意义的指示,这是未经训练的程序员的标志,他们似乎认为大变量名不知何故占用更多 space :-)


(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.