小编Ear*_*Sky的帖子

编译器会简化一次顺序执行几次的操作吗?

我这个问题已经很久了,但是却不知道在哪里看。如果某个操作多次编写,编译器会简化它还是运行完全相同的操作并获得完全相同的答案?

例如,在下文(i%3)*10中,多次重复类似c的伪代码。

for(int i=0; i<100; i++) {
    array[(i%3)*10] = someFunction((i%3)*10);
    int otherVar = (i%3)*10 + array[(i%3)*10];
    int lastVar = (i%3)*10 - otherVar;
    anotherFunction(lastVar);
}
Run Code Online (Sandbox Code Playgroud)

我了解变量在视觉上会更好,但会更快吗?是(i%3)*10计算每循环5次?

在某些情况下,我不知道使用变量还是仅保留原始操作更快。

编辑:在胜利10上使用gcc(MinGW.org GCC-8.2.0-3)8.2.0

c c++ optimization

10
推荐指数
1
解决办法
227
查看次数

标签 统计

c ×1

c++ ×1

optimization ×1