语法问题

qweworld 2010-10-17 05:07:29

unsigned char a[512];

//dest和src都是指向a数组的指针,函数功能是实现数组内copy n个字节
unsigned int memmove( unsigned char *dest, unsigned char *src, unsigned int n )
{
if( dest+n>511 || src+n>511 )//overflow
return 0;
else
{
if( dest < src ) //改为 if( .....)
{ // {...}
while( n-- ) //直接接 src = src + ( n - 1 );
*dest++ = *src++; // dest = dest + ( n - 1 );
} // while() *dest--=*src--;
else //此处else可以省略吗?省略后直接接下面语句但else的意思不变
{
src = src + ( n - 1 );
dest = dest + ( n - 1 );
while( n-- )
*dest-- = *src--;
}
return 1;
}
}

本人想确认一下,if else语句中的else可以省略吧?
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊熊大叔 2010-10-18
  • 打赏
  • 举报
回复
当然不能省,这是为了解决src和dest有部分重合的情况。重合的区域必须先复制出去后改写。
如果去掉else,就等于从不同方向复制了两遍,必然有一个方向的复制会违反要求。
qweworld 2010-10-17
  • 打赏
  • 举报
回复
发错分区了....

不过没关系,回答满意同样结贴

700

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧