C++ 为什么这段代码可以运行?双a[3];a[1,1]=1;
它通过vs2013编译器,而不是2D数组C++ 为什么这段代码可以运行?双a[3];a[1,1]=1;,c++,arrays,C++,Arrays,它通过vs2013编译器,而不是2D数组 int main() { double a[3]; a[1,1]=1; } 相当于: a[1,1]=1; 表达式1,1的计算结果为1,因为第一个1被丢弃,只有第二个1被计算。有关详细信息,请阅读。您正在调用。这将计算其第一个操作数,丢弃它,然后返回第二个操作数。因此,您的代码相当于 a[1]=1; 访问2D数组元素的语法如下 a[1] = 1; 在方括号内的表达式中有所谓的逗号运算符 b[1][2] = 42; 它的值是最后
int main()
{
double a[3];
a[1,1]=1;
}
相当于:
a[1,1]=1;
表达式1,1
的计算结果为1
,因为第一个1
被丢弃,只有第二个1
被计算。有关详细信息,请阅读。您正在调用。这将计算其第一个操作数,丢弃它,然后返回第二个操作数。因此,您的代码相当于
a[1]=1;
访问2D数组元素的语法如下
a[1] = 1;
在方括号内的表达式中有所谓的逗号运算符
b[1][2] = 42;
它的值是最后一个子表达式的值
所以这句话相当于
a[1,1]=1;
int main()
{
double a[3];
size_t i = 0;
a[i++, i++]=1;
}
此语法如下所示:
a[1]=1;
在C#中也有效,但它设置了二维数组的元素
在C/C++中,多维数组的每个索引应包含在单独的方括号中
下面是一个更有趣的逗号运算符示例
a[1,1]=1;
它也相当于
a[1,1]=1;
int main()
{
double a[3];
size_t i = 0;
a[i++, i++]=1;
}
2D数组的语法将是[1][1],如果我有一个矩阵类,并重载运算符[],那么使用矩阵[I,j]@liangbright:来解释为什么:重载
运算符不能更改它所需的参数数量,只有一个例外:运算符()
。