例如,假设我们有一个函数用 替换 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 和其他地方,但找不到对我有用的文档。