我正在开发一种嵌入式控制器,其中定义了一些不同的非标准类型,例如:
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));
)以外的所有内容都是等效的。但是,如果要在添加后执行转换,这就是您所需要的。
请注意,在所有情况下,最外面的括号都是多余的,因为类型强制转换也优先于赋值。