gpt4 book ai didi

c - 无法弄清楚为什么 printf 在标准输出上打印不同

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:02 25 4
gpt4 key购买 nike

试图理解union的行为

#include <stdio.h>
struct abc{
unsigned long a;
unsigned long b;
// unsigned long c;
};

union temp
{
struct abc a;
unsigned long arr[2048];
};

int main()
{
union temp temp;
temp.a.a = 3;
temp.a.b = 'a';
// temp.a.c = 2;
printf("add : 0x%x 0x%x 0x%x \n", temp.a.a, temp.a.b, temp.arr[0]);
printf("add : 0x%x 0x%x \n",temp.a,temp.arr[0]);
return 0;
}

Output:
add : 0x3 0x61 0x3
add : 0x3 0x61

问题:为什么在第二个 printf 变量“temp.arr[0]”中打印 0x61 而它应该再次打印 0x3?

最佳答案

在你的第二个 printf 中你有temp.a 这不是你想要的。如果将其更改为 temp.a.a,它将按预期工作。

关于c - 无法弄清楚为什么 printf 在标准输出上打印不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37276529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com