所以,我有这段代码:
#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;
之前的预期表达
有谁知道我做错了什么?
答案 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
的变量。