在下面的代码中(C语言),在每次迭代中, 1 << n 一次又一次地计算?

In the following code(C language), on each iteration, 1 << n calculated again and again?

在下面的代码中(C语言),在每次迭代中,1 << n 计算一次又一次 ?? 在竞争性编程中,开销可能 显着 更大的投入??

#define for(i,n) for(int i=0;i<(n);++i)
for(i,1<<n){
    ...
}

你的问题不是很清楚,但这不是编程问题,而是编译器优化问题。

在 C 中,大多数编译器将能够 'see' 在循环内判断 n his 的修改与否,并修改条件。

所以作为一个程序员,除非你有非常具体的约束和条件,否则不要担心这个

所以如果你这样做:

 int n=10;
 for(i=0;i<(1<<n);i++){
    n=func(i)
 }

1 < < n 将在每次迭代时重新计算,而在这种情况下:

 int n=10;
 for(i=0;i<(1<<n);i++){
    println(i)
 }

很有可能 1 < < n 只计算一次