MST

星途 面试题库

面试题:C语言联合体在基本数据类型转换中的应用

请编写一段C语言代码,利用联合体将一个无符号整数转换为对应的4个字节的字符数组。要求清晰展示联合体的定义和使用,并且解释代码中数据类型转换的原理。
22.6万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 定义联合体
union {
    unsigned int num;
    char bytes[4];
} converter;

int main() {
    unsigned int number = 0x12345678; // 示例无符号整数
    converter.num = number;

    printf("字节数组内容: ");
    for (int i = 0; i < 4; i++) {
        printf("%02hhx ", converter.bytes[i]);
    }
    printf("\n");

    return 0;
}

数据类型转换原理

  1. 联合体定义:联合体是一种特殊的数据类型,它允许不同的数据类型共享同一块内存空间。在上述代码中,converter 联合体包含一个 unsigned int 类型的成员 num 和一个 char 类型的数组 bytes。这两个成员共享相同的内存地址。
  2. 数据存储:当我们给 converter.num 赋值时,例如 converter.num = 0x12345678,这个无符号整数会按照其在内存中的存储方式(通常是小端序,低位字节存储在低地址)存储在联合体的内存空间中。
  3. 访问字节数组:由于 bytesnum 共享内存,我们可以通过访问 bytes 数组来获取 num 在内存中的各个字节。在 for 循环中,我们遍历 bytes 数组并打印每个字节的十六进制值,从而展示无符号整数对应的4个字节的内容。