例如,假设我们有一个函数用 替换 a 的两个最低有效小数int
位0
:
int Remove2LSD(int x)
{
return x / 100 * 100;
}
如果我们通过2052
了,我们应该期望返回2000
,2199
应该返回2100
。
如果您在有或没有优化的情况下运行 MSVC 编译器,似乎不会发生常量折叠,这是我所期望的,因为x / 100
应该在之前进行评估* 100
,并且我们不在x / 100
编译时进行评估。该参数x
来自运行时输入。
根据我的假设和测试,我认为我不必担心不断折叠变为return x / 100 * 100;
;return x;
但是,我希望找到关于这种情况下预期行为的更好文档,而不是仅仅依靠我的假设和测试。
有没有关于这种行为的好的文档?我查看了网络上的 SO 和其他地方,但找不到对我有用的文档。