游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6131|回复: 9

"unsigned short a:4" 这样的语句什么意思?

[复制链接]

22

主题

144

帖子

193

积分

注册会员

Rank: 2

积分
193
发表于 2007-8-7 10:47:00 | 显示全部楼层 |阅读模式
我学c/c++也有好几年了,但是突然今天看到有这样的语句出现:

struct _struct
{
  unsigned short a:4;
  unsigned short b:8;
};

这是什么意思,在c++里面的initialize list和inherit上面用到“:”操作,其他地方我没有看见过,到底这是什么意思?

niu人请指教.

2

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2007-8-7 11:31:00 | 显示全部楼层

Re:"unsigned short a:4" 这样的语句什么意思?

这是一种GNU C扩展,在linux内核中大量使用,这样的代码通常只能用gcc编译

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2007-8-7 12:01:00 | 显示全部楼层

Re:"unsigned short a:4" 这样的语句什么意思?

拜托,这是位结构啦,标准C的东西,不是GCC独有的
http://blog.programfan.com/article.asp?id=20169

2

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2007-8-7 12:01:00 | 显示全部楼层

Re:"unsigned short a:4" 这样的语句什么意思?

说错了……
在结构体中变量后面的冒号表示分配该变量所占的位域,
struct _struct
{
  unsigned short a:4;
  unsigned short b:8;
};
这个表示让a占4位,b占8位

前面我说的GNU C扩展是另一回事,是在对象初始化的时候,比如
#include <stdio.h>

struct _struct
{
  unsigned int a:4;
  unsigned int b:8;
};

int main()
{
        struct _struct gnuStruct = {
                a : 4,
                b : 8,
        };
        printf("gnuStruct.a = %u\n", gnuStruct.a);
        printf("gnuStruct.b = %u\n", gnuStruct.b);

        return 0;
}
main函数中的写法是gnu c的初始化方法,特此更正;-)

2

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2007-8-7 12:03:00 | 显示全部楼层

Re:"unsigned short a:4" 这样的语句什么意思?

汗……

2

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2007-8-7 12:05:00 | 显示全部楼层

Re:"unsigned short a:4" 这样的语句什么意思?

最近脑袋被linux进水……

76

主题

1100

帖子

1107

积分

金牌会员

Rank: 6Rank: 6

积分
1107
发表于 2007-8-7 13:21:00 | 显示全部楼层

Re:"unsigned short a:4" 这样的语句什么意思?

...晕.受教

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2007-8-7 13:50:00 | 显示全部楼层

Re:"unsigned short a:4" 这样的语句什么意思?

另外说一句!

你那个main里的写法,最早来自于DigitMars D。最后GNU C/C++才支持的。

D语言: 是DigitMars公司根据C++/JAVA/C#/设计的一种新的语言。

2

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2007-8-7 14:07:00 | 显示全部楼层

Re:"unsigned short a:4" 这样的语句什么意思?

恩……我还没有见识过D语言……受教了

22

主题

144

帖子

193

积分

注册会员

Rank: 2

积分
193
 楼主| 发表于 2007-8-7 14:56:00 | 显示全部楼层

我是LZ

多谢各位niu人指教!!


明白!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 13:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表