请解释在苹果SpriteKit示例代码中的uint32_t和0x1 << 0。

5

我在苹果的SpriteKit示例代码中找到了几行代码。

static const uint32_t missileCategory  =  0x1 << 0;

我知道static const是什么,但是uint32_t是什么意思?0x1 << 0是什么意思?它是十六进制吗?


4
uint32_t 是指一个无符号 32 位整数类型。0x1 << 0 表示数字 1 向左移动零位,看上去有点奇怪,但很可能在下一行有一个 0x1 << 1,以及接下来更多的类似代码。这样做是为了给该组中的常量分配位位置。 - Hot Licks
(这是C语言基础语言中非常常见的模式。) - Hot Licks
https://dev59.com/vWYr5IYBdhLWcg3w1NdY - Retro
1个回答

8

<<按位左移(乘以2)运算符。

<< 0 相当于 *1

因此等价语句为:

static const uint32_t missileCategory  =  0x1;

我在这里写了更多相关内容。

例如:

0x1 << 4 将返回 0x10

以二进制形式查看:

00000001 << 4 = 00010000
以十进制表示,这意味着1 * 2 * 2 * 2 * 2 或者 1 * 2^4

而且,由于这是一个uint32_t值,实际上应该是

0x00000010

我现在明白了,谢谢你的解释 :) - Arbitur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接