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