您好我正在创建一个这样的示例程序
#include<stdio.h>
int main()
{
typedef struct {
int a;
int b;
}v;
v m;
int g =54;
m=(v)g;
}
编译时我收到conversion to non-scalar type requested
错误。这里有什么问题。
答案 0 :(得分:1)
v
和int
的大小不同,编译器没有关于如何从int
转换为v
的规则。
编译器具有标量类型(char,short,int,long,float,double)之间的转换规则。
如果要分配结构,则需要相同类型的结构,或者可以单独分配字段:
m.a = 54;
m.b = 32;
答案 1 :(得分:0)
您收到此错误,因为不清楚是否要将54分配给m.a
或m.b
m.a = g
或
m.b = g
可能是你想要的。
答案 2 :(得分:0)
您使用(v)
的构造是显式转换或“强制转换”。 Cast仅允许基类型(此处为错误消息中的“标量类型”),而不是结构类型。