【发布时间】:2015-09-21 15:47:02
【问题描述】:
我试图准确地了解在使用浮点值对数组进行索引时会发生什么。
此链接:Float Values as an index in an Array in C++
不回答我的问题,因为它指出浮点数应四舍五入为整数。然而,在我试图评估的代码中,这个答案没有意义,因为索引值只会是 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;
}
这是声明的开头。
b[(i + j) / 32] ^= // some crazy bitwise expression
上面的内容位于嵌套的 for 循环中。
我在这里节省了很多代码,因为我想尽可能多地自己解决这个问题。但我想知道是否存在您想要遍历这样的数组的情况。
除了自动转换为 int 的浮点数之外,它还必须有更多的功能。这里肯定有更多内容。
【问题讨论】:
-
发生了一个numeric conversion,从浮点类型到整数类型。
-
不是
int / 16仍然是int,而不是float。 -
@JoachimPileborg 发生编译错误
-
@Jarod42 你不能在一个操作数不是整数或无范围枚举类型的情况下进行涉及下标的指针算术
-
你会被炒鱿鱼,否则你可能会获得最低的不及格分数。