这个数组初始化是如何进行的
How is this array initialization happening?
可能重复:
C++Comma操作员
我正在用初始化阵列
int main()
{
int arr[3]= { (1,3), 2, 4 };
cout << arr[0] << " " << arr[1] << " " << arr[2] << endl;
}
我以为它会在编译时出错,但它运行得很好。数组用值3,2,4
初始化,并且输出也是3 2 4
。
有人能解释一下这里发生了什么吗?
您看到的是逗号运算符。基本上,表达式:
1,7
将评估1
,但"返回"7。
你拥有的那种特殊形式(以及我上面的)并没有那么有用,但你可以做一些事情,比如:
x = a++, 1;
增加CCD_ 4并将CCD_。
你以前会看到这一点,但不一定意识到:
for (i = 0, j = 0; i < 4; i++, j++) ...
原因相同:
int x = (1,3);
assert(x==3);
发生。
逗号运算符就是这样工作的。它"返回"最后一个表达式,同时(可能)对两者进行求值。
相关文章:
- 阵列必须使用大括号封闭的初始器进行初始化
- 类型为 "Bucket&"(未限定的 const 限定)的引用不能使用 "SortedList." 类型的值进行初始化 如何修复此错误?
- 在 Xcode 中使用后对外部变量值进行初始化
- 使用空大括号进行初始化
- 将动态数组/矩阵传递给函数进行初始化
- 避免在 c++ 向量或 valarray 中进行初始化
- 子数组分配:使用聚合对象错误的预期"{...}"进行初始化
- C 汇编错误:无匹配的构造函数以进行初始化
- 在 C++ 中使用 char* 进行初始化
- 如何使用二维initializer_list进行初始化
- 使用 auto 之类的东西进行初始化
- C :如何防止使用AVX进行初始化的默认构造函数
- 静态变量需要在MAIN处理ARGV参数之前进行初始化
- std::shared_ptr语言 - 我可以使用等号 (=) 进行初始化吗?
- C++ 在堆上创建数组而不对其进行初始化
- C++标准是否保证默认情况下使用 {}/() 进行初始化会给出"0"?
- C++为对象分配存储而不对其进行初始化
- 为什么ISO C++标准禁止对成员进行初始化
- QList通过初始值设定项列表进行初始化
- 模板部分专用化阻止从派生类进行初始化