一道经典的C/C++面试题
问以下两段代码哪个执行效率高,为什么?
1)int aa[10][100];
//aa初始化
int sum=0;
for(int i=0;i<10;i++){
for(int j=0;j<100;j++){
sum+=aa[i][j];
}
}
2)int aa[10][100]={1};
//aa初始化
int sum=0;
for(int j=0;j<100;j++){
for(int i=0;i<10;i++){
sum+=aa[i][j];
}
}
[解决办法]
第一个好
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。
高质量C/C++编程指南P29上有说明!