找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2000|回复: 20
收起左侧

求助C语言if语句及else的运用是否合理?

  [复制链接]
ID:242464 发表于 2021-8-27 16:05 来自手机 | 显示全部楼层 |阅读模式
if(h>=v4)
{
if((h-v4)>=3)
v4=v4;
else
v4=h;
}
else
if((v4-h)>=3)
v4=v4;
else
v4=h;
这是一段将一个数h与另一个数V4进行比较,当h的值超过V4的值±3时都不要。这里我想问一下各位高手我的if语句及else的运用是否合理。
回复

使用道具 举报

ID:235200 发表于 2021-8-27 19:44 | 显示全部楼层
显然不合理,如果h这个值既不大于也不小于时没有作任何处理
回复

使用道具 举报

ID:883242 发表于 2021-8-27 19:50 | 显示全部楼层
倒数第二个else后面缺了花括号包住后面所有语句,导致该else变成了else if,最后一个else对应第一行的那个if。
回复

使用道具 举报

ID:242464 发表于 2021-8-28 10:36 来自手机 | 显示全部楼层
谢谢两位的指点
回复

使用道具 举报

ID:466730 发表于 2021-8-28 10:43 | 显示全部楼层
if ((h < v4 - 3) || (h > v4 + 3))
    h = v4;
回复

使用道具 举报

ID:716656 发表于 2021-8-28 11:07 | 显示全部楼层
Hephaestus 发表于 2021-8-27 19:50
倒数第二个else后面缺了花括号包住后面所有语句,导致该else变成了else if,最后一个else对应第一行的那个i ...

if(h>=v4)
{
if((h-v4)>=3)
v4=v4;
else
v4=h;
}
else
{
if((v4-h)>=3)
v4=v4;
}
else
v4=h;
回复

使用道具 举报

ID:382454 发表于 2021-8-28 11:35 | 显示全部楼层
看起来贼变扭呀。。。。。。。。。。
回复

使用道具 举报

ID:962743 发表于 2021-8-28 13:40 | 显示全部楼层
if ((h < v4 - 3) || (h > v4 + 3))
     v4= h;
回复

使用道具 举报

ID:624769 发表于 2021-8-28 14:21 | 显示全部楼层
本帖最后由 188610329 于 2021-8-28 16:11 编辑

按你的内容,整理逻辑后,
大概是这个意思: h 比 v4 +3 小 或者 h 比 v4 - 3 大  则  v4 = h, 否则 v4 不变,
那么,其实,应该就是这么一行代码。

if ((h > v4 - 3) || (h < v4 + 3))      v4 = h;

另外 你最后那个 } 位置不对, 应该在 v4 = h; 之后, 不然 最后那个 else 没有if 配对了。
回复

使用道具 举报

ID:386001 发表于 2021-8-30 09:46 | 显示全部楼层
我的理解:
如果你的是判定一个数 h 是不是在 V4 的±3之内,即 V4的公差为±3,如没超公差就保留,超了就不要了
那么程序中只要加这个即可:
if ( (h < v4 + 3) &&(h > v4 - 3))     
      v4 = h;
回复

使用道具 举报

ID:415064 发表于 2021-8-30 18:22 | 显示全部楼层
给你格式化了下,你自己分析
if (h >= v4)
{
    if ((h - v4) >= 3)
        v4 = v4;
    else
        v4 = h;
}
else if ((v4 - h) >= 3)
    v4 = v4;
else
    v4 = h;
回复

使用道具 举报

ID:743654 发表于 2021-8-31 08:54 | 显示全部楼层
楼主先理清一下else if 的关系,else是与最近的if 成对的
回复

使用道具 举报

ID:963178 发表于 2021-8-31 10:25 来自手机 | 显示全部楼层
除了第一个if对应的else,语法没错误,就是有点麻烦
回复

使用道具 举报

ID:963178 发表于 2021-8-31 10:26 来自手机 | 显示全部楼层
v4=v4没必要写
回复

使用道具 举报

ID:313048 发表于 2021-8-31 10:56 | 显示全部楼层
if ( (h < v4 + 3) &&(h > v4 - 3))     
      v4 = h;
如果你是初学,那么你可以一条条的列下来捋顺逻辑,但是你的最后一定要慢慢变成上述这个一条语句就可以解决的样子。这样才能慢慢进步。
回复

使用道具 举报

ID:950946 发表于 2021-8-31 12:08 | 显示全部楼层
本帖最后由 dwb123 于 2021-8-31 12:12 编辑

这波完全就是全集了,没有用的
回复

使用道具 举报

ID:451629 发表于 2021-8-31 18:29 | 显示全部楼层
显然不合理的,第一个if判断只包含了第二个i判断f,没有包含第三if判断
回复

使用道具 举报

ID:476415 发表于 2021-8-31 18:39 来自手机 | 显示全部楼层
大家乐意帮助新手,但是,网络真的拉低了人们自己追求解决问题的动力,这种问题都要发个帖问下……
回复

使用道具 举报

ID:981034 发表于 2022-1-5 15:05 | 显示全部楼层
这个我也不会,最好笑是问电子技术的,这么简单也问,编出的程序有用?但一细想,自己会才偷笑,不要怪人
回复

使用道具 举报

ID:139866 发表于 2022-1-5 18:00 | 显示全部楼层
本来也想写一个程序,写完括号想了想,这么简单我还浪费时间?
这种问题你自己运行一下就知道了,连这点问题都不愿意花时间调试,或许该考虑放弃了
回复

使用道具 举报

ID:908826 发表于 2022-1-6 08:22 | 显示全部楼层
你这个写法相当别扭,else会与上面第一个显式可见的if配对,所以基本语法是能用运行的,但是逻辑确实够乱的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表