朋友,你要达到的目的如果只是以上那段要求的话,第一句 if(a1/0x10==bflag)就多了,在这我需要提示的是,你在第一句用的是a1的高4位与bflag做的比较!!!
其他单看你语法,都是对的,所以不能指出什么问题,我想是你的逻辑上出现的问题,我只能提供书写简化的建议如下(以下指令与楼主程序达到目的是一样的)
if(a1/16==bflag) //判断a1的高4位等于bflag
{
if(a1%16==0) //a1的低4位等于0
{
dflag=dflag-(b1%16);
b1=0;
a1=0;
}
else
{
if((dflag+(b1%16))<=4)
{
a1=a1<<4; //这里a1变掉了,所以要特别注意,不能用同一个a1进行循环
dflag=dflag+(b1%16);
yiweiflag=1;
}
}
}
另外,程序注释的部分,麻烦你特别看下,是不是你需要达到的目的,如果不是的话,你可能就需要改动你自己的程序了
ia1/0x10==bflag;
if(!a1==0)//不等于0时候
{ if(( b1+dflag)<4)
dflag=dflag+(b%0x10)
a1=a1<<4;
dflag=dflag+(b1%0x10);
yiweiflag=1;
}
dflag =dflag-(b1%0x10);
这个应该是你描述的意思吧
更新一下,编译器版本试一下
dsdfsa