相关疑难解决方法(0)

C UNIONS的真实例子

可能重复:
C中的联合

我在接受采访时被要求提供一个关于工会的真实例子.我建议他的工会可以用于低级系统编程.他让我举一个相关的例子.我告诉过我们可以使用union找到机器的字节顺序,但他似乎根本没有留下深刻的印象.我的意思是我可以建议他将工会与现实生活联系起来?

谢谢.

c unions

9
推荐指数
0
解决办法
710
查看次数

在 C 中,转换/访问相同的内存是不同的变量

如果我有 4 个字节的内存并且希望以 unsigned long L和 char c[4]的形式访问该内存。在 C 中执行此操作最有效的方法是什么?

例如,如果我将L设置为 300,则字节将设置为0x0000012c,如果我访问c[3]我希望看到0x2c

如果我将c[3]加一,它就会变成0x2dL现在的值为 301

谢谢

c memory pointers

5
推荐指数
1
解决办法
198
查看次数

使用 union 进行转换的可移植性

我想使用 RGBA 值表示 32 位数字,使用联合生成该数字的值是否可移植?考虑这个 C 代码;

union pixel {
    uint32_t value;
    uint8_t RGBA[4];
};
Run Code Online (Sandbox Code Playgroud)

这编译得很好,并且我喜欢使用它而不是一堆函数。但这安全吗?

c unions

3
推荐指数
1
解决办法
1893
查看次数

使用union变量分配两个值

变量a由值10指定,变量b由20指定为union变量v.然后它给出a的输出是20而不是10.我没有得到它.

#include<stdio.h>  
int main()  
{
   union var
   {
       int a, b;
   };
   union var v;
   v.a=10;
   v.b=20;
   printf("%d\n", v.a);
   return 0;
}  
Run Code Online (Sandbox Code Playgroud)

我执行了程序,输出为20.

c unions

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

包含C中条件字段的结构

我正在尝试实现一个协议标准,我对它们的条件字段概念有点麻烦.根据某些条件,它们被定义为存在或不存在的字段.他们给出的例子如下:

    uint16 Pressure;
    enum VehicleType { car = 0, motorbike = 1};
    struct TirePressureInfo {
                    VehicleType type;
                    select (type)
                    {
                    case car:
                            Pressure frontLeft;
                            Pressure frontRight;
                            Pressure rearLeft;
                            Pressure rearRight;
                    case motorbike:
                            Pressure front;
                            Pressure rear;
                    }
            }
Run Code Online (Sandbox Code Playgroud)

无论如何我都没有意识到要在C中完成这项工作,或者甚至可能.无论如何,我无法想到实现这一点.有一点需要注意的是,这将在Linux内核模块中实现,所以我也有一些限制.

            struct {
                    uint8 protocol_version;
                    ContentType type;
                    select (type) {
                    case unsecured :
                    opaque data<var>;
                    case signed, signed_partial_payload,
                    signed_external_payload:
                    SignedData signed_data;
                    case signed_wsa:
                    SignedWsa signed_wsa;
                    case encrypted :
                    EncryptedData encrypted_data;
                    case crl_request :
                    CrlRequest crl_request;
                    case crl :
                    Crl crl;
                    case other_value: …
Run Code Online (Sandbox Code Playgroud)

c conditional struct linux-kernel

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

使用if语句输出并集

嘿,我在此C代码上有一个作业问题:

#include<stdio.h>

typedef union{
    char var1;
    int var2;
    float var3;
}data;

int main()
{
    data mydata;

    mydata.var1 = 'B';
    mydata.var2 = 12;

    if(mydata.var1 == 'B')
        mydata.var3 = 3.5;
    else
        mydata.var3 = 7.1;

    printf("%.1f", mydata.var3);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是7.1,我想知道是否有人可以解释为什么输出是7.1而不是3.5。

为您的帮助加油。

c union if-statement

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

标签 统计

c ×6

unions ×3

conditional ×1

if-statement ×1

linux-kernel ×1

memory ×1

pointers ×1

struct ×1

union ×1