[英]Shift left and cast with float in C
編譯器在編譯此行時顯示錯誤:
float Data;
unsigned long Valeur;
Data = - (1 << 2 - (Float_t)Valeur) * 2.135;
這是消息:
error: illegal type(s): int '<<' float
我沒有找到錯誤? 你能幫助我嗎?
表達方式
- (1 << 2 - (Float_t)Valeur) * 2.135;
被解釋為
- (1 << (2 - (Float_t)Valeur)) * 2.135;
並且2 - (Float_t)Valeur)
是Float_t
,我認為它是float
或類似的。 您不能移位浮點數。
假設非標准Float_t
被typedef
“d到float
或等同物,這樣的:
Data = - (1 << 2 - (Float_t)Valeur) * 2.135;
^
|
bad!
是問題。 上面計算了2 - (Float_t) Valeur
,然后使用(floating-point!)結果進行平移。 也許你是說
Data = -((1 << 2) - (Float_t) Valeur) * 2.135;
或者其他的東西。 很難確定,這是很奇怪的代碼。
Valeur
未初始化,並且<<
優先級低於-
,也許您正在尋找:
Data = - ((1 << 2) - (Float_t)Valeur) * 2.135;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.