MST

星途 面试题库

面试题:C语言结构体位域的基础应用

定义一个结构体,包含三个位域成员,分别为表示颜色的红(3位)、绿(3位)、蓝(2位)分量,然后编写一个函数,输入一个该结构体变量,输出其代表的颜色值(用十进制表示)。
31.3万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 定义结构体
typedef struct {
    unsigned int red : 3;
    unsigned int green : 3;
    unsigned int blue : 2;
} Color;

// 函数声明
unsigned int getColorValue(Color color);

int main() {
    Color color = {5, 6, 3}; // 示例值
    unsigned int value = getColorValue(color);
    printf("颜色值(十进制): %u\n", value);
    return 0;
}

// 函数定义
unsigned int getColorValue(Color color) {
    return (color.red << 5) | (color.green << 2) | color.blue;
}

解释:

  1. 定义了一个名为Color的结构体,包含三个位域成员red(3位)、green(3位)、blue(2位)。
  2. getColorValue函数将结构体中的颜色分量组合成一个十进制表示的颜色值。其中red左移5位,green左移2位,然后与blue进行按位或操作。
  3. main函数中,创建一个Color结构体变量并初始化,调用getColorValue函数获取颜色值并输出。