首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C 语言有关问题

2012-02-15 
C 语言问题#include stdio.htypedefstruct{inta:2intb:2intc:1}testvoidmain(){testtt.a1t.b3t

C 语言问题
#include <stdio.h>

typedef   struct
{

int   a:2;
int   b:2;
int   c:1;
}test;


void   main()
{
      test   t;

      t.a   =   1;
      t.b   =   3;
      t.c   =   1;

    printf( "%d\n ",t.a);
    printf( "%d\n ",t.b);
    printf( "%d\n ",t.c);


}

请问   int   a:2;
int   b:2;
int   c:1;
  这个是什么意思   ?     谢谢!

[解决办法]
用几个字节
[解决办法]
这种用法的标准叫法是:位段
int a:2;表示a是一个有符号整型,占有两位,也就是两bit。
int b:2;表示b是一个有符号整型,占有两位,也就是两bit。
int c:1;表示a是一个有符号整型,占有一位,也就是一bit。

不过象这样的定义,定义为如下形式好一些。象c只有一位,但却被符号位用了, 我真不知道这个怎么用。
unsgined int a:2;表示a是一个无符号整型,占有两位,也就是两bit。
unsigned int b:2;表示b是一个无符号整型,占有两位,也就是两bit。
unsigned int c:1;表示c是一个无符号整型,占有一位,也就是一bit
[解决办法]
位段,没错,不过注意内存里面是从低位到高位
比如内存是初始为0
XXX0 0000(X表示0或1,不过我们不关心)
低5位,
0 0000 分别是0(c) 00(b) 00(a)
t.a = 1;
XXX0 0001
t.b = 3;
XXX0 1101
t.c = 1;
XXX1 1101
因为高位没初始化,又没定义为unsigned,用%d显示出来的数
a=1
b=-1
c=1或-1

[解决办法]
同意楼上的意见.
[解决办法]
学习
[解决办法]
又长见识了。。。。
[解决办法]
同意 genieyyt(梧桐一叶) 的意见
[解决办法]
长了见识。。
[解决办法]
#include <stdio.h> ------为文件名

typedef struct------程序的被调用函数
{-----------------程序开始

int a:2;---------设定a为整型变量,并将值设为2
int b:2;---------设定b为同上
int c:1;---------设定c为同上
}test;函数结束


void main() 主函数
{--------函数体开始
test t;    

t.a = 1;
t.b = 3;
t.c = 1;

printf( "%d\n ",t.a);输出
printf( "%d\n ",t.b);输出
printf( "%d\n ",t.c);输出----------三者的值a,b,c


}

热点排行