我收到此错误"转换为非标量类型请求"

时间:2014-05-06 13:34:36

标签: c

您好我正在创建一个这样的示例程序

#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错误。这里有什么问题。

3 个答案:

答案 0 :(得分:1)

vint的大小不同,编译器没有关于如何从int转换为v的规则。

编译器具有标量类型(char,short,int,long,float,double)之间的转换规则。

如果要分配结构,则需要相同类型的结构,或者可以单独分配字段:

m.a = 54;
m.b = 32;

答案 1 :(得分:0)

您收到此错误,因为不清楚是否要将54分配给m.am.b

m.a = g

m.b = g

可能是你想要的。

答案 2 :(得分:0)

您使用(v)的构造是显式转换或“强制转换”。 Cast仅允许基类型(此处为错误消息中的“标量类型”),而不是结构类型。