结构内的联合

时间:2014-10-09 01:29:14

标签: c struct printf scanf unions

所以,我有这段代码:

 #include <stdio.h>
 #include <stdlib.h>

 struct lista{ 
    union info{
       double operando;
       char operador;
    }info;
 };

 typedef struct lista Lista;

 int main(){

 printf("char: ");
 scanf("%c", Lista.info.operador);
 getchar();
 printf("%c\n", Lista.info.operador);
 printf("double: ");
 scanf("%lf", Lista.info.operando);
 getchar();
 printf("%lf\n", Lista.info.operando);

 return 0;

 }

当我尝试编译它时,我收到此错误:

  

错误:在&#39; Lista&#39;

之前的预期表达

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:1)

Lista类型,不是变量,您需要执行以下操作:

Lista xyzzy;
:
scanf ("%c", &(xyzzy.info.operador));

您还会注意到,因为scanf系列函数希望获得地址变量以便填充它们,所以我已经更改了调用使用&(xyzzy.info.operador)代替xyzzy.info.operador


并且,除非您需要使用结构名称,否则我倾向于仅使用类似名称来定义类型名称:

typedef struct { 
    union {
        double operando;
        char operador;
    } info;
} Lista;

答案 1 :(得分:0)

您从未声明过名为Lista的变量。