访问像 arr[1,2,3] 这样的一维数组C++ - 这是什么意思
Accessing C++ one dimensional array like arr[1,2,3] - what does it mean?
考虑这段代码(它在VisualStudio 2012上编译和运行)
#include "stdafx.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
int arr[100];
for (int i = 0; i < 100; ++i)
arr[i]=i;
int a = arr[10]; // 10
int a1 = arr[10,10]; // 10 <-
int a3 = arr[5,10,7]; // 7 <-
int a4 = arr[5,10,7,2]; // 2 <-
}
我不明白标有
所以什么意思?它有什么好处?
这不是一些特殊的数组下标语法。方括号内的表达式被计算为单个值,然后使用该值为数组编制索引。所以你的最后一行等效于:
int a4 = arr[(5,10,7,2)];
那么该表达式是如何计算的呢?它使用逗号运算符。逗号运算符计算其左操作数并丢弃它,然后计算其右操作数。表达式的值是右操作数的值。当你有一堆像这样相邻时,该值是最右边的值 - 在上面的情况下,2。所以现在相当于:
int a4 = arr[2];
逗号运算符的用途相当有限,但其某些用途在维基百科上概述。通常,当封闭块不可用时(例如在静态初始化器中),它可用于计算两个不同的表达式。但是,在这种情况下,使用它没有任何效果。
这是逗号运算符 - 计算所有表达式,并使用最后一个表达式。这里没有理由,它只会阻碍可读性。代码与
int a = arr[10]; // 10
int a1 = arr[10]; // 10 <-
int a3 = arr[7]; // 7 <-
int a4 = arr[2]; // 2 <-
相关文章:
- 将二维数组的所有元素插入到一维数组中
- C++语法差异:二维和一维数组(指针算术)
- 将一维数组写入 CSV C++中的不同列?
- C++:将矩阵存储在一维数组中
- 如何在一维数组中的每个元素中都有多个int值
- 以C++填充一维数组
- 用于在一维数组上嵌套循环操作的正确 openmp 指令
- 如何在 <threads> c++ 中使用和一维数组进行矩阵乘法?
- C++按内存地址将多维数组更改为一维数组
- 在 c++ 中返回一维数组时出错
- 一维数组映射方式的性能差异问题
- 如何使用一维数组更改二维数组中的值?
- 使用二维数组作为一维数组是否正确?可能会导致未定义的行为左右?
- 将一维数组转换为二维数组
- 如何使用一维数组列表初始化二维数组
- 在一维数组中对二维进行排序
- 将一维数组的索引转换为二维数组
- 通过访问二维数组实现双线性插值的概念类似于一维数组
- 将二维数组传递到只需要一维数组的函数中(C++)
- 如何访问带有多个括号的一维数组以提高可读性