标题: C语言程序的一个小问题 [打印本页]

作者: PDDDF    时间: 2019-12-17 10:00
标题: C语言程序的一个小问题
if(t_1<=1 || t_2<=1)
{
        while(t_1<=1 && t_2<=1)
        {
                dis_E(3);
                return;
        }
        if(t_2<=1)  dis_E(2);  return;
        if(t_1<=1)  dis_E(1);  return;     //没有执行
}
这个函数用作判断两个脚的输入电平,A1脚输入低电平显示E1,A2脚输入低电平显示A2,同时为低电平显示A3;
问题:
最后的那句语句没有执行,被忽略了,大家看看是什么原因

作者: 风清    时间: 2019-12-17 10:32
满足 t_2<=1   if(t_2<=1)  dis_E(2);  return; 直接return退出了 两个if只会执行一个
作者: moluxiyan    时间: 2019-12-17 10:39
看看是不是在这 if(t_2<=1)  dis_E(2);  return;返回了
作者: yefans    时间: 2019-12-17 10:43
倒数第二句if(t_2<=1)  dis_E(2);  缺少一个else,此if语句执行后。到第一个分号 “dis_E(2);” ,则此if语句跳出,后接return。就直接跳出了最大的if语句。
作者: yefans    时间: 2019-12-17 10:47
倒数第二行if语句不完整,少一个else。
if(t_2<=1)  dis_E(2);  return;
上述if语句,第一个分号时就结束了if判断,后接return就直接跳出最大if语句了
应改正为:if(t_2<=1)  dis_E(2); else return;
建议仔细看一下if语句的用法。
作者: angmall    时间: 2019-12-17 12:01
给你改了

if(t_1<=1 || t_2<=1)
{
        while(t_1<=1 && t_2<=1)
        {
                dis_E(3);
                return;
        }
        if(t_2<=1)  {dis_E(2);  return; }  // <<----- 改成这样
        if(t_1<=1)  {dis_E(1);  return; }   //没有执行
}
作者: PDDDF    时间: 2019-12-17 14:57
问题已解决,谢谢大家
作者: 3FIRE    时间: 2019-12-18 01:22
angmall 发表于 2019-12-17 12:01
给你改了

if(t_1


如有空,想问问这种和else if 在机器里执行的区别
作者: ar_fa    时间: 2019-12-18 08:39
你的写法很,为什么用if(t_1<=1 || t_2<=1),而不用if(t_1 || t_2)?很少像你那么用
作者: 今夜的雨    时间: 2019-12-18 09:48
if中直接t_1和t_2就行,高电平和低电平就是0和1
作者: YZH9527    时间: 2019-12-18 17:59
这个函数倒数第二行if语句少一个else。
就是改正为:if(t_2<=1)  dis_E(2); else return;
建议你看一下if语句的用法。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1