【c语言】位段大小的计算以及宏的应用

// 位段大小的计算以及宏的应用

#include <stdio.h>
#include <malloc.h>
#define MAX_SIZE A+B

struct _Record_Struct
{
	unsigned char Env_Alarm_ID : 4;
	unsigned char Paral : 2;
	unsigned char state;
	unsigned char avail : 1;
}*Env_Alarm_Record;

int main()
{
	int A = 2;
	int B = 3;
	struct _Record_Struct *pointer = (struct _Record_Struct*)malloc
									 (sizeof(struct _Record_Struct) * MAX_SIZE);
	printf("%d\n", sizeof(struct _Record_Struct));//结构体大小是3
	free(pointer);
	return 0;
}
// 3*2+3=9开辟出来9个字节的空间

<img src="http://img.blog.csdn.net/20150508174521965?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

时间: 2024-10-10 21:08:59

【c语言】位段大小的计算以及宏的应用的相关文章

计算机中地址和内存大小的计算和编译出来的数据段

由地址计算内存大小(消除模糊认知) 在计算机中一个地址代表一个字节的内存的位置,即这个byte的门牌号,所以如果给出地址空间的起始地址是可以计算出内存大小的,比如STM32中Flash可编程的地址是从0x0800 0000开始到0x0801FFFF结束的所以内存大小的计算过程如下: 地址差 = 结束地址 - 开始地址  =  0x0001FFFF:他们可以表示的Byte的个数是N = 0x0001 FFFF + 1即0x00020000将N变换为十进制是131072. 内存大小 = N/1024

MySQL key_len 大小的计算

背景: 当用Explain查看SQL的执行计划时,里面有列显示了 key_len 的值,根据这个值可以判断索引的长度,在组合索引里面可以更清楚的了解到了哪部分字段使用到了索引. 环境: CREATE TABLE `tmp_0612` ( `id` int(11) NOT NULL, `name` varchar(10) DEFAULT NULL, `age` int(11) DEFAULT NULL, `address` varchar(100) DEFAULT NULL, PRIMARY KE

文件大小的计算和文件夹大小的计算

1读取本地documents文件里文件夹的大小(我们可以利用NSDirectoryEnumerator这个类) NSString * Docupath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; //    一般不要吧文件直接放到documents文件夹下,要创建新的文件夹 NSString * filePath = [Docupath stringByAppendin

C语言中的边界计算与不对称边界(一)

1.如果一个数组有10个元素,那么这个数组下标的允许取值范围是什么呢? 这个问题对于不同的程序设计语言有着不同的答案.例如,对于Fortran,PL/I以及Snobol4等程序语言,这个数组的下标取值缺省从1开始,而且这些语言也允许编程者另外指定数组下标的起始值.而对于Algol和Pascal语言,数组下标没有缺省的起始值,编程者必须显式的指定每个数组的下界与上界.在标准的Basic语言中,声明一个拥有10个元素的数组,实际上编译器分配了11个元素的空间,下标范围从0到10. 在C语言中,这个数

struct和class内存大小的计算

结构体内存大小的计算: 用例一: #include<stdio.h> union ss { int a; char b; }; struct MyStruct { int temp1;//4个字节 char temp2;//一个字节,补齐3个字节 ss aa;//4个字节 char temp3;//一个字节 char temp4;//一个字节,补齐两个字节 }; int main() { printf("%d", sizeof(MyStruct)); return 0; }

Java对象大小的计算方式

Java对象大小的计算方式首先我们需要知道的是 Java 对象是包含三部分数据的:?1.对象头?2.实例数据?3.对齐填充(可能没有,因为 java 中规定对象的起始地址必须是 8 bytes 的正数倍)? 对于普通对象而言,对象头中包括 mark word(8 bytes).kclass(没有开启压缩的时候是 8 bytes,开启压缩了的话,就是 4 bytes),如果是数组类型的对象话,这里还有一个数组长度字段,4字节.? 在 JDK6 64位 23 update+ 之后都默认开启了指针压缩

C语言之大小端问题

1:大小端名字的由来及发展 (1)在乔纳森·斯威夫特的著名讽刺小说<格列夫游记>中,小人国内部分裂成Big-endian和Little-endian两派,区别在于一派要求从鸡蛋的大头把鸡蛋打破,另一派要求从鸡蛋的小头把鸡蛋打破.斯威夫特借以讽刺英国的政党之争,在计算机工业中指数据储存顺序的分歧. (2)后来计算机通信发展起来后,遇到一个问题就是:在串口等串行通信中,一次只能发送1个字节.这时候我要发送一个int类型的数就遇到一个问题.int类型有4个字节,我是按照:byte0 byte1 by

js 比较日期大小及计算日期差

计算两个日期的差        var first = new Date(objstart.value.replace(/-/g,"/"));        var second = new Date(objend.value.replace(/-/g,"/"));         alert("日期1比日期2大:"+(first-second)/(24*60*60*1000)); 比较两个日期的大小        var date1 = new

C语言数值表示和计算

---恢复内容开始--- 一.数据类型 在我的Windows上查看<limit.h>可以看到对数据类型长度的定义 #define SHRT_MIN (-32768) // minimum (signed) short value#define SHRT_MAX 32767 // maximum (signed) short value#define USHRT_MAX 0xffff // maximum unsigned short value#define INT_MIN (-2147483