C++ 访问C++;像arr[1,2,3]这样的一维数组-它是什么意思?

C++ 访问C++;像arr[1,2,3]这样的一维数组-它是什么意思?,c++,arrays,syntax,C++,Arrays,Syntax,考虑以下代码(它在VisualStudio 2012上编译和运行) #包括“stdafx.h” #包括 int _tmain(int argc,_TCHAR*argv[] { int-arr[100]; 对于(int i=0;i

考虑以下代码(它在VisualStudio 2012上编译和运行)

#包括“stdafx.h”
#包括
int _tmain(int argc,_TCHAR*argv[]
{
int-arr[100];
对于(int i=0;i<100;++i)
arr[i]=i;
int a=arr[10];//10

int a1=arr[10,10];//10这是逗号运算符-对所有表达式求值,并使用最后一个表达式。这里没有理由这样做,它只会妨碍可读性。代码与

int a = arr[10]; // 10
int a1 = arr[10]; // 10 <-
int a3 = arr[7]; // 7 <-
int a4 = arr[2]; // 2 <-
int a=arr[10];//10

int a1=arr[10];//10这是逗号运算符-对所有表达式求值,并使用最后一个表达式。这里没有理由这样做,它只会妨碍可读性。代码与

int a = arr[10]; // 10
int a1 = arr[10]; // 10 <-
int a3 = arr[7]; // 7 <-
int a4 = arr[2]; // 2 <-
int a=arr[10];//10

int a1=arr[10];//10这不是什么特殊的数组下标语法。方括号内的表达式将被求值为单个值,然后该值用于对数组进行索引。因此,最后一行相当于:

int a4 = arr[(5,10,7,2)];
int a4 = arr[2];
那么表达式是如何计算的呢?它使用逗号运算符。逗号运算符计算其左操作数并丢弃它,然后计算其右操作数。表达式的值是右操作数的值。当一组操作数彼此相邻时,该值是最右边的值-在上述情况下为2.所以现在它相当于:

int a4 = arr[(5,10,7,2)];
int a4 = arr[2];

逗号运算符的用途相当有限,但一般来说,当封闭块不可用时(例如在静态初始化器中),它对计算两个不同的表达式非常有用。但是,在这种情况下,使用它没有任何效果。

这不是某种特殊的数组下标语法。方括号内的表达式将被计算为单个值,然后该值将用于索引数组。因此,最后一行相当于:

int a4 = arr[(5,10,7,2)];
int a4 = arr[2];
那么表达式是如何计算的呢?它使用逗号运算符。逗号运算符计算其左操作数并丢弃它,然后计算其右操作数。表达式的值是右操作数的值。当一组操作数彼此相邻时,该值是最右边的值-在上述情况下为2.所以现在它相当于:

int a4 = arr[(5,10,7,2)];
int a4 = arr[2];

逗号运算符的用途相当有限,但一般来说,当封闭块不可用时(例如在静态初始化器中),它对计算两个不同的表达式非常有用。但是,在这种情况下,使用它没有任何效果。

你有逗号运算符有用的例子吗?@Daniel in
对于
循环,你可以使用
i++,j++
。你有逗号运算符有用的例子吗?@Daniel in
对于
循环,你可以使用
i++,j++