小编rob*_*son的帖子

C 是否仍然将两个 `int` 的乘积转换为相同大小的 `int`?

如果有人能给我指点权威参考文献(我很难找到),我将不胜感激。

在古代:

int32_t a, b;
int64_t c;
c = a*b;
Run Code Online (Sandbox Code Playgroud)

这段代码没有做我想要的,因为结果a*b仍然是一个 32 位字,它被符号扩展到 64 位c. 我知道我可以在乘法之前转换ab转换int64_t为,但这是在深度嵌套的 DSP 算法中,我不想浪费执行符号扩展的机器指令,我不希望机器执行 64x64乘。

在现代 C 编译器中执行此操作的正确且有效的方法是什么?

c types casting

-1
推荐指数
1
解决办法
83
查看次数

标签 统计

c ×1

casting ×1

types ×1