相关疑难解决方法(0)

通过指针访问C联合成员

通过指针访问union成员(如下例所示)会导致C99中的未定义行为吗?意图似乎很清楚,但我知道有关于别名和联盟的一些限制.

union { int i; char c; } u;

int  *ip = &u.i;
char *ic = &u.c;

*ip = 0;
*ic = 'a';
printf("%c\n", u.c);
Run Code Online (Sandbox Code Playgroud)

c pointers unions

11
推荐指数
2
解决办法
7018
查看次数

写作然后根据C标准未定义阅读不同的工会成员?

我读到这个代码是根据c标准未定义但我无法找到原因.它在gcc 8.1.0和clang-6.0中编译没有错误并打印1.

代码如下:

#include <stdio.h>

int main()
{
   union {
     int i;
     short s;
   } u;  
   u.i = 42;
   u.s = 1;

   printf("%d\n", u.i);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c language-lawyer

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

标签 统计

c ×2

language-lawyer ×1

pointers ×1

unions ×1