结构体中的位段是如何定义的?

更新于
2026-10-04 00:05:14
0阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计496个文字,预计阅读时间需要2分钟。

原创新颖,别具一格,以下为改写后的开头内容:

创意无限,灵感涌动,让我们一起踏上探索创新的奇妙旅程。

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//位段也是一种结构体类型,但有两个不同

//1.位段的成员必须是int、unsigned int 或者signed int

//2.位段的成员名后有一个冒号和一个数字。

//3.位段时不支持跨平台的


struct S

{

int a: 2;//冒号后面的值代表a只需要2个比特位

int b: 5;

int c: 10;

int d: 30;

};


//{

// int a : 3; //s.a=10//1010->010

// int b : 4;//s.b=20//10100->0100 00 10 00 10->22//前4个数组成1位后4个数组成1位

// int c : 5;//s.c=3//11->00011 00 00 00 11->03

// int d : 4;//s.d=4//100->0100 00 00 01 00->04

//};



int main()

{

struct S s;

printf("%d\n", sizeof(s));//8个字节 开辟整形空间,第一块空间用17个字节丢15个 第二块丢2个

return 0;

}


//位段跨平台问题

//1.int位段被当成有符号数,还是无符号数是不确定的。

阅读全文

本文共计496个文字,预计阅读时间需要2分钟。

原创新颖,别具一格,以下为改写后的开头内容:

创意无限,灵感涌动,让我们一起踏上探索创新的奇妙旅程。

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//位段也是一种结构体类型,但有两个不同

//1.位段的成员必须是int、unsigned int 或者signed int

//2.位段的成员名后有一个冒号和一个数字。

//3.位段时不支持跨平台的


struct S

{

int a: 2;//冒号后面的值代表a只需要2个比特位

int b: 5;

int c: 10;

int d: 30;

};


//{

// int a : 3; //s.a=10//1010->010

// int b : 4;//s.b=20//10100->0100 00 10 00 10->22//前4个数组成1位后4个数组成1位

// int c : 5;//s.c=3//11->00011 00 00 00 11->03

// int d : 4;//s.d=4//100->0100 00 00 01 00->04

//};



int main()

{

struct S s;

printf("%d\n", sizeof(s));//8个字节 开辟整形空间,第一块空间用17个字节丢15个 第二块丢2个

return 0;

}


//位段跨平台问题

//1.int位段被当成有符号数,还是无符号数是不确定的。

阅读全文