为什么这段代码可以运行?双a [3]; [1,1] = 1;

时间:2014-02-09 21:21:40

标签: c++ arrays

int main()
{
    double a[3];  
    a[1,1]=1;
}

它通过vs2013编译器,它不是2D数组。

3 个答案:

答案 0 :(得分:8)

您正在调用comma operator。这将评估其第一个操作数,丢弃它,然后返回第二个操作数。所以你的代码相当于

a[1] = 1;

访问2D数组元素的语法是

b[1][2] = 42;

答案 1 :(得分:3)

a[1,1]=1;

相当于:

a[1]=1;

表达式1,1的计算结果为1,因为第一个1被丢弃,只评估了第二个1。请阅读comma operator了解更多信息。

答案 2 :(得分:1)

在方括号内的表达式中有所谓的逗号运算符。

a[1,1]=1;

它的值是最后一个子表达式的值。

所以这句话相当于

a[1]=1;

此语法为

a[1,1]=1;

在C#中也有效,但它设置了二维数组的元素。

在C / C ++中,多维数组的每个索引都应包含在单独的方括号中。

这是一个使用逗号运算符

的更有趣的示例
int main()
{
    double a[3];  
    size_t i = 0;  
    a[i++, i++]=1;
}

它也相当于

    a[1]=1;