繁体   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