C++ - 用float索引数组时会发生什么?

Dan*_*her 4 c++ arrays indexing

我试图准确理解在使用float值索引数组时会发生什么.

此链接:Float Values作为C++中Array的索引

不回答我的问题,因为它声明浮点数应舍入为整数.但是在我试图评估的代码中,这个答案没有意义,因为索引值只能是0或1.

我正在尝试解决任天堂发布的编码挑战.为了解决这个问题,有一个古老的语句,它使用一个长复杂的按位表达式对数组进行逐位赋值.

该数组被声明为指针

unsigned int* b = new unsigned int[size / 16]; // <- output tab

然后它为每个元素分配0

for (int i = 0; i < size / 16; i++) {   // Write size / 16 zeros to b
    b[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)

这是声明的开头.

b[(i + j) / 32] ^= // some crazy bitwise expression

以上内容位于嵌套for循环内部.

我在这里节省了很多代码,因为我想尽可能多地解决这个问题.但我想知道是否有一种情况你想要迭代这样的数组.

它必须比浮动只是自动转换为int更多.这里有更多的事情要发生.

小智 8

这里没有float.size是整数,并且16是整数,因此size/16也是整数.

整数除法向零舍入,所以如果size[0,16),那么size/16 == 0.如果size[16,32),那么size/16 == 1,依此类推.如果size(-16, 0],那么size / 16 == 0也是.

([x,y)是从"半开"间隔xy:即,它包含之间的每个数字xy,此外,它包括x,但不包括y)