簡體   English   中英

括號和類型轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM