C 是否在“中使用外部参数?”;d=(((INT32)a)*((INT32)b))”;课题

C 是否在“中使用外部参数?”;d=(((INT32)a)*((INT32)b))”;课题,c,operator-precedence,C,Operator Precedence,这些语句在所有C编译器中都是等价的吗 d = (((INT32) a) * ((INT32) b)); d = ((INT32) a) * ((INT32) b); d = ((INT32) a) * (INT32) b; 是的,它们是等价的(typecast)大于* 你只需要d=(INT32)a*(INT32)b是的,它们是等效的(typecast)大于* 你只需要d=(INT32)a*(INT32)b如果附近没有宏,则这些语句是等效的 当涉及宏时,为了额外的预处理器安全,人们通常在代码

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

d = (((INT32) a) * ((INT32) b));
d =  ((INT32) a) * ((INT32) b);
d =  ((INT32) a) * (INT32) b;

是的,它们是等价的<代码>(typecast)大于
*


你只需要
d=(INT32)a*(INT32)b

是的,它们是等效的<代码>(typecast)
大于
*


你只需要
d=(INT32)a*(INT32)b

如果附近没有宏,则这些语句是等效的

当涉及宏时,为了额外的预处理器安全,人们通常在代码周围加上各种括号。但是,由于不推荐使用宏,我们现在可以忘记这个场景了

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

INT32 aINT32 = (INT32)(a);
INT32 bINT32 = (INT32)(b);
d = aINT32 * bINT32;

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

当涉及宏时,为了额外的预处理器安全,人们通常在代码周围加上各种括号。但是,由于不推荐使用宏,我们现在可以忘记这个场景了

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

INT32 aINT32 = (INT32)(a);
INT32 bINT32 = (INT32)(b);
d = aINT32 * bINT32;

所以我甚至可以写
d=(INT32)a*(INT32)b?@Andreas,是的,你可以。所以我甚至可以写
d=(INT32)a*(INT32)b?@Andreas,是的,你可以。@StephenCanon谢谢。我在想C++。我修正了密码。@stephennon谢谢。我在想C++。我修正了我的密码。