c语言 大端小端概念及测是代码

大端:低位放在高地址,高位放在低地址

小端:低位放在低地址,高位放在高地址

11223344

这里写图片描述

面试考点:

  • 1.阐述概念
  • 2.写一个程序判断当前机器是大端还是小端

代码

#include <stdio.h>
#include <stdlib.h>

int check_sys()
{
    int i = 1;
    return *(char *)&i;
}
int main()
{
    int ret = check_sys();
    if (ret == 1)
    {
        printf("大端\n");
    }
    else
    {
        printf("小端\n");
    }
    system("pause");
    return 0;
}

代码2

#include <stdio.h>
#include <stdlib.h>
check_sys()
{
    union
    {
        int i;
        char c;
    } Un;
    Un.i = 1;
    return Un.c;
}

int main()
{
    int ret = check_sys;
    if (ret == 1)
    {
        printf("大端\n");
    }
    else
    {
        printf("小端\n");
    }
    system("pause");
    return 0;
}

一道面试题

int main()
{
    int a[4] = { 1,2,3,4 };
    int *ptr1 = (int *)(&a + 1);
    int *ptr2 = (int *)((int)a + 1);
    printf("%x,%x", ptr1[-1],*ptr2);
    system("pause");
}

这里写图片描述

int *ptr1 = (int *)(&a + 1);

取出数组的地址加1,指向了数组元素4后面的位置即ptr[0]
输出ptr1[-1]则输出了4。

int *ptr2 = (int *)((int)a + 1);

数组a的首元素加1指向了2;
二进制:0000 0000 0000 0000 0000 0000 0000 0010
16进制:00 00 00 02
小端存储:02 00 00 00;
打印出来的结果就是 02000000

猜你喜欢

转载自blog.csdn.net/csdn_kou/article/details/80244756
今日推荐