在 C++ 中,常量数组arr包含 0 到 80 之间的 100 个数字。
如果我选择 中的数字arr为s ,每次将它们用作双指针的索引(即 )时,char它们是否会隐式转换为?intdoublepointer[arr[i]]
是的,它们将被转换为 type int。根据 C++ 标准,“下标运算符 [] 的解释方式是 E1[E2] 与 *((E1)+(E2)) 相同”。如果使用加法运算符,则“对算术或枚举类型的操作数执行通常的算术转换”。这意味着当 char 类型的对象在表达式中用作下标运算符的索引时,它们将转换为 int 类型的对象。
请考虑到 char 类型可能表现为 unsigned char 或signed char,具体取决于您将选择或默认设置的编译器选项。
对于可以用作下标运算符中索引的类型,它们应该是无作用域枚举或某些整型。