【发布时间】:2014-10-09 01:29:14
【问题描述】:
所以,我有这个代码:
#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;
}
当我尝试编译它时,我得到了这个错误:
错误:“Lista”之前的预期表达式
有谁知道我做错了什么?
【问题讨论】:
-
在任何特定的行上?
-
在所有出现的行上:'Lista.info.operando' 或 'Lista.info.operador'
-
主要问题是您定义了一个结构,然后定义了一个名为 Lista 的类型,但您实际上并没有在 main 中创建该类型的对象。您需要处理结构的一个实例。因此,在 main 中添加类似
Lista myLista;的内容,并且 in main 将Lista的所有引用更改为myLista。myLista是一个变量名,因此它可以是您选择的名称。 -
另一个考虑因素是您没有正确使用 scanf。您需要传递字符变量(或双精度)的地址,而不是实际的字符或双精度。所以你应该做
scanf("%c", &Lista.info.operador);和scanf("%lf", &myLista.info.operando);。附带说明%lf是 gcc 格式扩展,不被认为是可移植的。 -
现在只缺少 &。谢谢!!!
标签: c struct printf scanf unions