C语言联合体使用和判断CPU大端存储还是小端存储

#include"stdio.h"
#include"string.h"
typedef unsigned char BYTE;

//当多个类型多个对象多个事物只取其一时
//假设网络节点A和B中通信协议涉及四类报文
//报文格式为报文类型字段+报文内容的结构体
//四个报文结构体类型为STRUCTTYPE1-4
//最简单的方式组织一个统一的报文数据结构
/*
typedef union tag_packet_content
{
    STRUCTTYPE1 pkt1;
    STRUCTTYPE2 pkt2;
    STRUCTTYPE3 pkt3;
    STRUCTTYPE4 pkt4;
}packet_content;

typedef struct tag_packet
{
    BYTE pktType;
    packet_content pktContent;    
}packet;
*/

//小端存储返回1 大端存储返回0
int checkCPU()
{
    union w
    {
        int a;
        char b;
    }c;
    c.a = 1;
    return (c.b == 1);
}

int main(int argc,char *argv[])
{
    unsigned int num,*p;
    p = #
    num = 0;
    *(BYTE *)p = 0xff;
    if(num == 0xff)
    {
        printf("The endian of cpu is little\n");
    } 
    else   //num == 0xff000000
    {
        printf("The endian of cpu is big\n");
    }    
    printf("checkCPU:%d\n",checkCPU());
    return 0;
}

实验结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值