在 c++ 中,const 数组 arr
包含 0 到 80 之间的 100 个数字。
如果我将 arr
中的数字选择为 char
,它们是否会在每次用作索引时隐式转换为 int
双指针,即 doublepointer[arr[i]]
?
最佳答案
是的,它们将被转换为 int
类型。根据 C++ 标准,“下标运算符 [] 的解释方式使得 E1[E2] 与 *((E1)+(E2)) 相同。”
如果使用加法运算符,那么“通常的算术转换是为
算术或枚举类型的操作数。”这意味着当它们在表达式中用作下标运算符的索引时,char 类型的对象将被转换为 int 类型的对象。
请注意,根据您将选择的或默认设置的编译器选项,char 类型可能表现为 unsigned char 或 signed char。
对于可以在下标运算符中用作索引的类型,则它们要么是无作用域的枚举,要么是一些整数类型。
关于c++,数组索引需要是int吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25231679/