用C语言在IAR中编写stm32程序,有个别语句不执行

2020-01-22 12:04发布

char exchange(char source)
{
  char high=source<<4;  /*将source右移取高四位,低四位补0赋值给high,*/  
  char low=source>>4;   /*将source右移取高四位,低四位补0赋值给high,*/
  return high+low;     /*两者相加即得经过交换的数,return将其返回给调用函数*/
}


主函数调用如下所示
main
{
char a=0;
a=exchange(0x36);
}
问题:在主函数中执行到 a=exchange(0x36);时,进入子函数后,程序直接跳到 return high+low;而不执行char high=source<<4; char low=source>>4;这两句,这是怎么回事???
我用的是IAR 芯片是stm32107vct7.希望高手给我解答一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。