c语言简单判断cpu类型

虽然几乎没有悬念的
绝大多数的pc的cpu是little-endian
不过这个程序的思路还是让我感到佩服
当然 也是我太菜

方法1
定义联合结构体
union endian_un
{
    short var;
    char bits[sizeof ( short ) ];
};
short 在32位下占2个字节 int 占4个字节
然后var=0x0102
这样字符数组也存上了这个数
看看bits[0]里存放的是1还是2就可以判断了

方法2
将short强制转换为char
看看char里是short的高位还是低位就可以判断了




/***************************************************************************
 *   Copyright (C) 2008 by root   *
判断cpu类型    big-endian or little-endian
线程模型:posix
gcc 版本 4.1.2 20070925 (Red Hat 4.1.2-33)
***************************************************************************/




#include <stdio.h>

union endian_un
{
    short var;
    char bits[sizeof ( short ) ];
};


int main ( int argc, char *argv[] )
{
    union endian_un flag;
    flag.var=0x0102;
    if ( sizeof ( short ) ==2 )
    {
        if ( flag.bits[0]==1&&flag.bits[1]==2 )
        {
            printf ( "judged by first method big-endian/n" );
        }
        if ( flag.bits[0]=2&&flag.bits[1]==1 )
        {
            printf ( "judged by first method little-endian/n" );
        }
    }
    unsigned short f=0x4321;
    if ( * ( unsigned char * ) &f==0x21 )
    {
        printf ( "judged by second method little-endian/n" );
    }
    if ( * ( unsigned char * ) &f==0x43 )
    {
        printf ( "judged by second method big-endian/n" );
    }

    return 1;
}





















 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值