导读:
源代码有点复杂,只是形式不用在意执行意义,它只是展示大部分所有的语法点:循环及其break和continue、goto、分支、try...catch等等,应有尽有。
int SocketAgent::DataReceiver(char *data)
{
SocketAgent *a;
int ret=0,pos,len,count;
int buff[1024];
int *i_data=(int *)data;
len=0 do{
if(i_data[len]=='a')
{
while(i_data[len] && len<1024)
{
if(i_data[len]=='/r')
{
len++ continue }
if(i_data[len]=='/n')
break }
}
}while(len<1024);
for(int i=0,pos=0,count=0i<1024i++)
{
if(i_data[i]!='q')
buff[pos++]=i_data[i];
if(i_data[i]=='b')
{
break }
else count++ if(i_data[i]==T_ERROR)
{
goto _exit;
}
}
try{
if(len>=1024)
throw("throw out");
}catch(char *error)
{
ShowMessage(error);
}
switch(count)
{
case 1:
ret=100 break case 2:
ret=200 break default:
ret=300 break }
return ret;
_exit:
ret=1001 return ret;
}
再看看分析后的流程图
是不是比单纯看代码容易很多?
本文转自
http://www.cnblogs.com/yesry/archive/2008/02/07/1065852.html
源代码有点复杂,只是形式不用在意执行意义,它只是展示大部分所有的语法点:循环及其break和continue、goto、分支、try...catch等等,应有尽有。
int SocketAgent::DataReceiver(char *data)
{
SocketAgent *a;
int ret=0,pos,len,count;
int buff[1024];
int *i_data=(int *)data;
len=0 do{
if(i_data[len]=='a')
{
while(i_data[len] && len<1024)
{
if(i_data[len]=='/r')
{
len++ continue }
if(i_data[len]=='/n')
break }
}
}while(len<1024);
for(int i=0,pos=0,count=0i<1024i++)
{
if(i_data[i]!='q')
buff[pos++]=i_data[i];
if(i_data[i]=='b')
{
break }
else count++ if(i_data[i]==T_ERROR)
{
goto _exit;
}
}
try{
if(len>=1024)
throw("throw out");
}catch(char *error)
{
ShowMessage(error);
}
switch(count)
{
case 1:
ret=100 break case 2:
ret=200 break default:
ret=300 break }
return ret;
_exit:
ret=1001 return ret;
}
再看看分析后的流程图

是不是比单纯看代码容易很多?
本文转自
http://www.cnblogs.com/yesry/archive/2008/02/07/1065852.html