|
发表于 2018-11-10 18:20:44
|
显示全部楼层
本楼为最佳答案
共用体变量可以在定义时初始化,如果不能在定义时初始化共用体变量,那么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.html
- 6.共用体变量的初始化。
- (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;
- }
复制代码
|
|