有许多雷锋工作在IT领域,其中他们有些做了调试程序,使得找出bug变得不那么困难了。但是,有太多bug平时并不动声色,有些就是当我们找出它们了,也感到难理解。比如下面两个程序,第一个不正常退出,第二个则能够运行完毕。
int main(int arc, char* arv[])
{
set<long>setSt;
char gg[125];
for(long k=0;k < 15;k++)
setSt.insert(k) ;
map<string,set<long> >mapSort;
for(int k=0;k < 15;k++){
sprintf(gg,"Why.%d",k);
mapSort.insert(pair<string,set<long> >(gg,setSt) ) ;
}
map<string,set<long> >::iterator itW=mapSort.begin();
for(int k=0;k < 17;k++){
if( itW !=mapSort.end() )
;
else if( "oldman"== itW->first){
cerr << "Passed;" << endl;
}
mapSort.erase(itW++);
}
exit(0);
}
int main(int arc, char* arv[])
{
map<int,string>setSnt;
map<int,string>::iterator itS;
char gg[125];
for(int k=0;k < 125;k++){
sprintf(gg,"Why.%d",k);
setSnt.insert(pair<int,string>(k,gg) ) ;
}
itS = setSnt.begin();
for(;;){
if(itS == setSnt.end()) break;
setSnt.erase(itS++);
}
if(itS == setSnt.end()){
if(123 == itS->first)
cout <<" ignore... " << endl;
else
cout <<" pass test. " << endl;
}
exit(0);
}
int main(int arc, char* arv[])
{
}
int main(int arc, char* arv[])
{
}