浮点数值能否用作数组的索引?如果将表达式用作索引导致浮点数值,会发生什么?
浮点数值能否用作数组的索引?如果将表达式用作索引导致浮点数值,会发生什么?
浮点数值将被转换为整数(这可能会根据编译器的警告级别而产生警告或错误)。
s1 = q[12.2]; // same as q[12]
s2 = q[12.999999]; // same as q[12]
s3 = q[12.1/6.2]; // same as q[1]
可以,但是没有意义。浮点数的值将被截断为整数。
(但是你可以使用std::map<float, T>
,不过大部分时间会因为精度问题错过预期的值。)
C++数组是一系列连续的内存位置。a[x]
表示“在a
指向的内存位置之后第x个内存位置”。
要访问序列中的第12.4个对象意味着什么?
它将被转换为整数。
这是一个错误。在[expr.sub]
中:
方括号内跟随着后缀表达式是一个后缀表达式。其中一个表达式应该具有“指向T的指针”类型,另一个应该具有未作用域枚举或整数类型。
我不知道标准中是否有规定转换应该发生在这里(尽管如果存在这样的条款,我也不会感到惊讶),但是使用ideone.com进行测试确实会产生编译错误。
然而,如果您对类进行下标操作而不是指针 - 例如std::vector
或std::array
- 那么operator[]
的重载将具有函数调用的通常语义,并且浮点参数将转换为相应的size_type
。