首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"d =(INT32) a) * ((INT32) b)“中的外括号重要吗?

"d =(INT32) a) * ((INT32) b)“中的外括号重要吗?
EN

Stack Overflow用户
提问于 2013-11-11 18:38:45
回答 2查看 50关注 0票数 1

这些语句在所有的C编译器中都是等价的吗?

代码语言:javascript
复制
d = (((INT32) a) * ((INT32) b));
d =  ((INT32) a) * ((INT32) b);
d =  ((INT32) a) * (INT32) b;
EN

回答 2

Stack Overflow用户

发布于 2013-11-11 18:43:33

是的,它们是等价的。(typecast)higher priority而不是*

你可以只使用d = (INT32) a * (INT32) b;

票数 4
EN

Stack Overflow用户

发布于 2013-11-11 18:48:28

在没有宏的情况下,这些语句是等效的。

当涉及到宏时,人们通常会在代码两边加上各种括号,以确保额外的预处理器安全性。既然不推荐使用宏,我们现在就可以忘记这个场景了。

在任何情况下,我发现一个好的策略是将类型转换隔离在单独的行中,因为它们通常涉及潜在的数据丢失风险。所以在你的例子中,假设d的类型是INT32,我会这样写:

代码语言:javascript
复制
INT32 aINT32 = (INT32)(a);
INT32 bINT32 = (INT32)(b);
d = aINT32 * bINT32;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19904249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档