在下面的代码中(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 只计算一次
在下面的代码中(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 只计算一次