#include <stdio.h>
int main(void) {
int i;
scanf("%d", &i);
if(i != 30) { return(0); }
printf("i is equal to %d\n", i);
}
Run Code Online (Sandbox Code Playgroud)
看来结果字符串将始终以"i等于30",那么,为什么不GCC优化此调用与一个调用printf puts(),或者write(),例如?
(刚刚检查了生成的程序集,使用gcc -O3(版本5.3.1),或者在Godbolt Compiler Explorer上)
如何在大小为n的正整数数组中找到最大的对,但是整数至少在距离k?(例如,如果第一个元素是[i],那么第二个元素应该是[i + k](或更多).)
我试过这个:
int max_sum = 0;
int sum;
for (int i = 0 ; i < n; i++) {
for( int j = i + k; j < n; j++) {
sum = arr_sums[i] + arr_sums[j];
if ( sum > max_sum ) {
max_sum = sum;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但对于大型阵列来说太慢了.