如果有人能给我指点权威参考文献(我很难找到),我将不胜感激。
在古代:
int32_t a, b;
int64_t c;
c = a*b;
Run Code Online (Sandbox Code Playgroud)
这段代码没有做我想要的,因为结果a*b仍然是一个 32 位字,它被符号扩展到 64 位c. 我知道我可以在乘法之前转换a或b转换int64_t为,但这是在深度嵌套的 DSP 算法中,我不想浪费执行符号扩展的机器指令,我不希望机器执行 64x64乘。
在现代 C 编译器中执行此操作的正确且有效的方法是什么?