共用体变量可以在定义时初始化,如果不能在定义时初始化共用体变量,那么const共用体变量将没有机会初始化
例如#include <stdio.h>
int main(void)
{
const union data{int i; char c; float f;} a;
a.f = 100.5;
printf("%.2f\n", a.f);
return 0;
}
上面这段代码编译时报错
#include <stdio.h>
int main(void)
{
const union data{int i; char c; float f;} a;
printf("%.2f\n", a.f);
return 0;
}
上面这段代码运行时报错,因为vs有运行时检查,检查到引用了未初始化的局部变量
https://baike.so.com/doc/6055337-6268367.html6.共用体变量的初始化。
(1)union data a=b; //把共用体变量初始化为另一个共用体
(2)union data a={123}; //初始化共用体为第一个成员
(3)union data a={.ch='a'}; //指定初始化项目,按照C99标准
7.共用体变量也可以作为函数的参数和返回值。
#include <stdio.h>
int main(void)
{
const union data{int i; char c; float f;} a = {.f = 100.5};
printf("%.2f\n", a.f);
return 0;
}
|