小编use*_*184的帖子

访问结构中的位字段

我是位域概念的新手.我试图访问结构中的元素,但它显示错误aa=v就像这样.

error: incompatible types when assigning to type ‘cc’ from type ‘long unsigned int ’
Run Code Online (Sandbox Code Playgroud)

并且如果我将其类型化,那就显示出错误 aa= (cc)v;

error: conversion to non-scalar type requested
Run Code Online (Sandbox Code Playgroud)

我尝试通过声明指向结构的指针来访问元素.在这种情况下我做得很好,但在这种情况下,我没有声明指向结构的指针,我必须访问元素.我怎样才能克服这个错误.

在此先感谢您的帮助

#include<stdio.h>
typedef struct 
{
        unsigned long a:8;
    unsigned long b:8;
    unsigned long c:8;
    unsigned long d:8;
}cc;


int main()
{ 
        cc aa ;
    unsigned long v = 1458;
    printf("%d\n",sizeof(aa));
    aa=v;    // aa= (cc)v;
    printf("%d %d %d %d\n", aa.a,aa.b,aa.c,aa.d);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

2
推荐指数
1
解决办法
4600
查看次数

标签 统计

c ×1