向左移动并在C中浮动

时间:2014-08-28 14:54:07

标签: c casting

编译器在编译此行时显示错误:

float Data;
unsigned long Valeur;
Data = - (1 << 2 - (Float_t)Valeur) * 2.135;

这是消息:

error: illegal type(s): int '<<' float

我没有找到错误?你能救我吗?

3 个答案:

答案 0 :(得分:2)

表达式

- (1 << 2 - (Float_t)Valeur) * 2.135;

被解释为

- (1 << (2 - (Float_t)Valeur)) * 2.135;

2 - (Float_t)Valeur)的类型为Float_t,我假设为float或类似。你不能换乘浮点数。

答案 1 :(得分:2)

假设非标准Float_ttypedef&#39; d为float或等效,则:

Data = - (1 << 2 - (Float_t)Valeur) * 2.135;
                       ^
                       |
                      bad!

是问题所在。以上计算2 - (Float_t) Valeur,然后使用(浮点!)结果进行移位。也许你的意思是

Data = -((1 << 2) - (Float_t) Valeur) * 2.135;

或者其他什么。很难确定,这是一个非常奇怪的代码。

答案 2 :(得分:2)

Valeur未初始化使用,<<的优先级低于-,可能您正在寻找:

Data = - ((1 << 2) - (Float_t)Valeur) * 2.135;