当前位置: 技术问答>linux和unix
强烈要求解释,SWITCH 无视CASE
来源: 互联网 发布时间:2017-01-29
本文导语: void outchar ( CONSOLE *pcon,char ch ) { BYTE *pvideo = (BYTE*)(VIDEO_MEM_BASE + pcon->curpos * 2); UINT32 org = pcon->org_addr,curpos = pcon->curpos; switch ( ch ) { case 0x0A: pcon->curpos = 80 ...
void outchar ( CONSOLE *pcon,char ch )
{
BYTE *pvideo = (BYTE*)(VIDEO_MEM_BASE + pcon->curpos * 2);
UINT32 org = pcon->org_addr,curpos = pcon->curpos;
switch ( ch )
{
case 0x0A:
pcon->curpos = 80 * ((curpos)/80 + 1);
break;
case 'b':
break;
deafault:
pvideo[0] = ch;
pvideo[1] = getrgb ();
pcon->curpos ++;
break;
}
setcurpos (pcon->curpos);
}
>> 我在GDB调试的时候,竟然发现,当CH = 0x0A的时候,竟然直接跳到最后,SWITCH都没有执行,
而当CH等于其他数据的时候,不管怎么写都是从第一个CASE执行后BREAK,但是写IF判断就没任何问题
求高人指点
{
BYTE *pvideo = (BYTE*)(VIDEO_MEM_BASE + pcon->curpos * 2);
UINT32 org = pcon->org_addr,curpos = pcon->curpos;
switch ( ch )
{
case 0x0A:
pcon->curpos = 80 * ((curpos)/80 + 1);
break;
case 'b':
break;
deafault:
pvideo[0] = ch;
pvideo[1] = getrgb ();
pcon->curpos ++;
break;
}
setcurpos (pcon->curpos);
}
>> 我在GDB调试的时候,竟然发现,当CH = 0x0A的时候,竟然直接跳到最后,SWITCH都没有执行,
而当CH等于其他数据的时候,不管怎么写都是从第一个CASE执行后BREAK,但是写IF判断就没任何问题
求高人指点
|
建议你把你的ch打印出来看看,肯定是你的条件不对,不用怀疑c语言的语法
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。