所以我有(((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)
也可以作为演员。
那么我们需要进行两次演员阵容还有其他原因吗?