1

所以我有(((uint32_t)(int32_t)IRQn) >> 5UL),其中 IRQn 是一个范围从 -14 到 81 的枚举。

据我所知,它首先转换为 int32_t,然后转换为 uint32_t。之后,它向左移动。最后,它(在给定的代码示例之外)用作数组索引。

作为测试,我编写了以下代码并使用相同的编译器对其进行了编译:

int a=0, b=0, c=0, d=0;

a=-5;
b=(int32_t)a;
c=(uint32_t)b;
d=(uint32_t)a;

据我所知,所有 4 个数字最后都有相同的二进制值。这让我相信这((uint32_t)IRQn)也可以作为演员。

那么我们需要进行两次演员阵容还有其他原因吗?

4

0 回答 0