C中的位字段
假设您的C程序包括许多在一个名为页面的结构中分组的真实 /错误变量,以检查制成品是否允许足够的宽度和高度,如下:
struct { unsigned int chieurong ; unsigned int chieucao ; } trangthai ;
该结构需要8个字节的内存,但实际上它保留每个变量的0或1个字节。在这种情况下,C编程语言具有优化内存的方法。您正在使用结构内的变量,然后可以定义变量的大小,它将通知C编译器,仅使用字节数。例如,上述结构可以如下重写:
struct { unsigned int chieurong : 1 ; unsigned int chieucao : 1 ; } trangthai ;
现在,上述结构将需要4个字节的页面变量,但仅使用2个位来存储该值。您必须使用该长度为1位的最多32个变量,因此该结构将使用4个字节,并且当您具有33个变量时,它将在内存中分配下一个值并开始使用8个字节。现在,让我们检查下面的示例以了解此定义。
#include #include /* dinh nghia mot cau truc don gian */ struct { unsigned int chieurong ; unsigned int chieucao ; } trangthai1 ; /* dinh nghia mot cau truc voi cac truong bit */ struct { unsigned int chieurong : 1 ; unsigned int chieucao : 1 ; } trangthai2 ; int main ( ) { printf ( "Bo nho bi chiem giu boi trangthai1 la: %dn" , sizeof ( trangthai1 )); printf ( "Bo nho bi chiem giu boi trangthai2 la: %dn" , sizeof ( trangthai2 )); printf ( "n===========================n" ); printf ( "QTM chuc cac ban hoc tot! n" ); return 0 ; }
编译和运行上述C程序将导致:
在C中声明位字段
声明具有以下模式的结构内部的一些字段:
struct { kieu_du_lieu [ ten_thanh_vien ] : do_rong ; };
以下是一个位字段中变量元素的描述:
elementDescriptionKieu_du_lieu一个整数类型可以确定位点的解释。此类型可以是int,签名的int,unsigned int ten_thanh_vien bit字段的名称。 do_rong(是宽度)字段中包含的位数。长度必须小于或等于特定对象的位字段长度。
用给定幅度值定义的变量称为位字段。一个位字段可以存储多个单位,例如您需要一个变量来存储从0到7的值,然后您可以定义最大长度3位的位字段,如下所示:
struct { unsigned int tuoi : 3 ; } Tuoi ;
上面的定义将指示C编译器,该变量将使用3位存储值,如果您使用3位以上,则不允许您这样做。现在尝试以下示例:
#include #include struct { unsigned int tuoi : 3 ; } Tuoi ; int main ( ) { Tuoi . tuoi = 3 ; printf ( "Bo nho bi chiem giu boi Tuoi la Sizeof( Tuoi ) = %dn" , sizeof ( Tuoi ) ); printf ( "Tuoi.tuoi : %dn" , Tuoi . tuoi ); Tuoi . tuoi = 6 ; printf ( "Tuoi.tuoi : %dn" , Tuoi . tuoi ); Tuoi . tuoi = 7 ; printf ( "Tuoi.tuoi : %dn" , Tuoi . tuoi ); /* Bay gio chung ta thu in nhieu hon 3 bit */ printf ( "n-----------------------n" ); Tuoi . tuoi = 8 ; printf ( "Tuoi.tuoi : %dn" , Tuoi . tuoi ); Tuoi . tuoi = 9 ; printf ( "Tuoi.tuoi : %dn" , Tuoi . tuoi ); printf ( "n===========================n" ); printf ( "QTM chuc cac ban hoc tot! n" ); return 0 ; }
编译和运行上述C程序将导致:
根据TutorialSpoint
上一篇文章:c的工会
下一课:C中的关键字Typedef
你应该阅读
可能有兴趣
- C中的关键字Typedef
C程序语言提供了一个Typedef关键字,您可以使用它为新名称提供类型。这是一个为1字节号定义字节条目(如无符号字符)的示例。
- C中的输入和输出
当我们谈论输入时,我们正在谈论该程序的输入数据。可以从命令行或某个文件提供。程序C语言提供了一组可用的功能来读取输入的数据并为所需程序提供。
- 读取 - 在C中写文件
上一章解释了由C语言处理的标准输入和输出设备。在本章中,我们将看到程序员如何使用数据创建,打开和关闭文本文件或二进制文件。贮存。
- c
C中的预处理程序不是编译器的一部分,但是编译过程中有单独的步骤。以最基本的方式,C语言中的预处理程序是文本替换工具,编译器指令不需要在编译之前进行预处理。
- C中的标题文件
文件标头是具有.h格式的文件,其中包含函数声明和宏定义,可以在多个源文件上共享。文件标头有两种类型:程序员写的文件以及编译器随附的文件。
- 按C中的类型
类型是将变量从一种数据类型转换为另一种数据类型的一种方法。