永发信息网

c语言返回值问题

答案:3  悬赏:60  手机版
解决时间 2021-05-08 14:34
  • 提问者网友:战魂
  • 2021-05-08 01:43

你好,问一下,下面的程序,是在网上找的,有一个地方看不懂,请教一下
//行列扫描程序,可以自己定义端口和扫描方式,这里做简单介绍
#include <reg52.h>//包含头文件
#define uchar unsigned char
#define uint unsigned int

unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F

uchar keyscan(void);
void delay(uint i);

void main()
{
uchar key;
P2=0x00;//1数码管亮 按相应的按键,会显示按键上的字符
while(1)
{
key=keyscan();//调用键盘扫描,
switch(key)
{
case 0x7e:P0=dofly[0];break;//0 按下相应的键显示相对应的码值
case 0x7d:P0=dofly[1];break;//1
case 0x7b:P0=dofly[2];break;//2
case 0x77:P0=dofly[3];break;//3
case 0xbe:P0=dofly[4];break;//4
case 0xbd:P0=dofly[5];break;//5
case 0xbb:P0=dofly[6];break;//6
case 0xb7:P0=dofly[7];break;//7
case 0xde:P0=dofly[8];break;//8
case 0xdd:P0=dofly[9];break;//9
case 0xdb:P0=dofly[10];break;//a
case 0xd7:P0=dofly[11];break;//b
case 0xee:P0=dofly[12];break;//c
case 0xed:P0=dofly[13];break;//d
case 0xeb:P0=dofly[14];break;//e
case 0xe7:P0=dofly[15];break;//f
}
}
}
uchar keyscan(void)//键盘扫描函数,使用行列反转扫描法
{
uchar cord_h,cord_l;//行列值
P3=0x0f; //行线输出全为0
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay(100); //去抖
if(cord_h!=0x0f)
{
cord_h=P3&0x0f; //读入列线值,只有行和按下列是零
P3=cord_h|0xf0; //输出当前列线值,把所有的行变成零,按下的列0给P3
cord_l=P3&0xf0; //读入行线值,只有按下的行是零,所有列是零
return(cord_h+cord_l);//键盘最后组合码值
}
}return(0xff); //返回该值
}

void delay(uint i)//延时函数
{
while(i--);
}
*********************************************************上面的程序中这里怎么有两个返回值啊
return(cord_h+cord_l);//键盘最后组合码值
}
}return(0xff); //返回该值
}

最佳答案
  • 五星知识达人网友:封刀令
  • 2021-05-08 03:20

不是两个返回值,里面的是在if中的


if(cord_h!=0x0f)


{


//如果进入了这个分支(也就是上面的if满足了),那么就会在这里返回


return (cord_h+cord_l);


}


return (0xff); //在这里返回的时候,表明上面的if没有满足,也就是cord_h!=0x0f不成立,那就会执行到这里。

全部回答
  • 1楼网友:煞尾
  • 2021-05-08 05:20
如果条件成立,会执行第一个return,既然return了,函数就执行结束了,不会再执行这个函数的其他部分了。 以下是例外:java中有try-finally处理,如果在try中return,finally中的内容应该是肯定被执行的。c中也有类似异常处理,但不清楚有没有finally处理。
  • 2楼网友:撞了怀
  • 2021-05-08 04:07
请注意程序分支结构。 一个return是"if(cord_h!=0x0f) //先检测有无按键按下"成立的时候的处理,如果条件不成立,第一个return就不会被执行,而去处理/执行第二个return
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯