| 
 | 
 
 
发表于 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;
 
 - }
 
 
  复制代码 
 |   
 
 
 
 |