我试图在结构中乘以矩阵的一个成员,结果得到一个错误。这是代码:

typedef unsigned char   BYTE;

typedef struct {
    BYTE bMatrix[3][4];
} STRUCTURE;


STRUCTURE structure = FillStructure();

float myFloat = structure.bMatrix[1][1] * 0.1;

最后一行给了我
binary*的操作数无效(有'BYTE*{aka unsigned char*}'和'float')
谢谢您!!

最佳答案

首先,FillStructure是宏吗(正如您所说的,这是真正的代码)?我觉得奇怪的是,你试图在一个函数之外进行这些计算,这样做更合适,比如:

typedef unsigned char BYTE;
typedef struct {
    BYTE bMatrix[3][4];
} STRUCTURE;

#define FillStructure() (STRUCTURE){{0}} /* i guess? */

int main(void)
{
    STRUCTURE structure = FillStructure();
    float myFloat = structure.bMatrix[1][1] * 0.1;
}

然后,如注释中所述,您应该尝试强制转换矩阵成员,以便“转换”值:
float myFloat = (float)structure.bMatrix[1][1] * 0.1;

关于c - 用浮点数乘以结构中矩阵的成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41892833/

10-12 01:55