[英]Parentheses and Typecasting
我正在開發一種嵌入式控制器,其中定義了一些不同的非標准類型,例如EG:
uint8 = unsigned char
sint16 = int
如果我需要從uint8
轉換為sint16
,我應該在哪里使用括號?
uint8 u8_My_Var = 255;
sint16 s16_New_Var = 0;
s16_New_Var = ((sint16)u8_My_Var + 1); //or
s16_New_Var = ((sint16)(u8_My_Var) + 1); //or
s16_New_Var = ((sint16)(u8_My_Var + 1)); //or
s16_New_Var = (((sint16)(u8_My_Var)) + 1);
我通常會使用(((sint16)(u8_My_Var)) + 1)
,但是我開始懷疑類型轉換的``范圍''。
類型強制轉換優先於加法s16_New_Var = ((sint16)(u8_My_Var + 1));
,因此除第三行以外的所有內容( s16_New_Var = ((sint16)(u8_My_Var + 1));
)是等效的。 但是,如果要在添加后執行轉換,這就是您所需要的。
請注意,在所有情況下,最外面的括號都是多余的,因為類型強制轉換也優先於賦值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.