Chinaunix首页 | 论坛 | 博客
  • 博客访问: 701907
  • 博文数量: 126
  • 博客积分: 2944
  • 博客等级: 上校
  • 技术积分: 1160
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-17 11:09
个人简介

文章分类

全部博文(126)

文章存档

2022年(1)

2018年(1)

2017年(5)

2016年(5)

2013年(5)

2012年(21)

2011年(24)

2010年(1)

2009年(2)

2008年(12)

2007年(6)

2006年(19)

2005年(24)

分类: C/C++

2007-11-23 16:24:21

#include <iostream>

using namespace std;

typedef struct {
    unsigned int i:3;
    unsigned int j:5;
}str1;

typedef struct {
    str1 s1[2];
}str2;

int main()
{
    str2 s2 = {{{5,6},{7,8}}};  // str2 s2 = {5, 6, 7, 8}; is also OK
    str1 s3[2] = {{1,2},{3,4}};

    cout << s2.s1[1].i << endl;
    cout << s3[1].i << endl;

    return 0;
}


注意斜体那行, 似乎多了一对大括号, 实际上, 如果把多的那对大括号去掉, 编译将不能通过. 实际上, 如果只保留最外层的括号, 编译也可以通过. 不知道为什么.

编译环境: winxp, cygwin, gcc 3.4.4(cygming special, gdc 0.12, using dmd 0.125)
阅读(1193) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-03-17 08:50:20

结构定义按顺序初始化, 多谢, 又学了一招!

chinaunix网友2008-03-11 09:25:34

由外到里的大括号分别是:结构str2,数组(成员s1[2]),结构str1.所以一个也不能少.但是结构定义也可按顺序依次初始化,所以只保留最外层也可,那样就是结构str2的大括号了~