nsi*_*akr 7 c c++ integer division integer-division
我已经在C++中编程了一段时间,但突然有一个疑问,并希望澄清Stackoverflow社区.
当一个整数除以另一个整数时,我们都知道结果是一个整数并且是明智的,浮点除以float也是一个浮点数.
但谁负责提供这个结果?是编译器还是DIV指令?
Car*_*rum 12
这取决于您的架构是否有DIV指令.如果您的体系结构具有整数和浮点除法指令,则编译器将针对代码指定的情况发出正确的指令.语言标准规定了类型提升的规则,以及是否应在每种可能的情况下使用整数或浮点除法.
如果只有整数除法指令或只有浮点除法指令,编译器将内联一些代码或生成对数学支持库的调用来处理除法.除法指令的速度非常慢,因此大多数编译器会尽可能地优化它们(例如,用移位指令替换,或者预先计算结果以进行编译时常量的除法).