一道经典的C/C++面试题,该如何处理


一道经典的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];
}
}

c语言 基本概念 程序开发

blueman 11 years, 6 months ago


第一个好
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。
高质量C/C++编程指南P29上有说明!

moulu answered 11 years, 6 months ago

Your Answer