读书人

本地对象数组初始化列表的{}中间,使用

发布时间: 2013-10-16 11:29:46 作者: rapoo

本地对象数组初始化列表的{}当中,使用{}和()个代表什么含义?
我有下面几行代码:


struct G
{
int i;
int j;
};
int _tmain(int argc, _TCHAR* argv[])
{
G obj={2,0};
G objs[]={{1,2},{3,4}};
G buf[]={(1,2),(3,4)};//这行结果不对
int pi[]={(2),(3),(4)};

因为G是一个POD类型,所以可以用{}来表示一个对象数组的初始化列表。因此obj/objs都没有问题。
但是buf数组我用的是小括号()而不是大括号{},编译居然也通过了。但是调试发现buf数组里面只有一个成员
{{i=2,j=4}}
这就奇怪了。

请问: C++语法里面这样的写法:{(1,2),(3,4)}到底代表什么含义? 既然编译可以通过,那这个到底代表什么呢?
谢谢!
[解决办法]
(1,2) 之间的那个 , 叫 comma operator,(1,2) 这个表达式的值是 2。
所以,{(1,2),(3,4)} 就是 {2,4},后者用于初始化一个 struct G,所以 buf 里面只有一个成员。

读书人网 >C++

热点推荐