好吧,我在一些同事刚刚开始支持的代码中遇到了这个问题。我从来没有做过这样的事情并且不会做,但我很惊讶编译器没有将其标记为错误。
基本上你可以看到"奇怪的"这个小片段的行为:
array[3/4] = 3;
这是允许的,即使我认为3/4会返回一个双倍。 如果您将其更改为:
array[3.0/4] = 3;
您收到编译错误。
我假设第一个没有创建编译器错误,因为它执行整数除法并返回一个整数。
答案 0 :(得分:5)
是的,如果两个部分都是整数 - 编译器执行整数除法。 你得到了
3 / 4 = 0
当你尝试将double除以整数时 - 得到一个double结果,这不是数组的有效索引。