数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 518|回复: 11

[C51] 许老师这种写法第二个if的作用范围是怎样的?

[复制链接]
发表于 2025-6-11 20:02:03 | 显示全部楼层 |阅读模式
本帖最后由 猪小呆 于 2025-6-11 20:08 编辑

许老师喜欢把多条语句写在同一行里,有时候会让人很困惑,比如下面这句,第二个if满足条件的时候是“slw=1; chg=0;”这两条都执行呢,还是只执行“slw=1;”这一条呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
发表于 2025-6-11 20:13:00 | 显示全部楼层
本帖最后由 21cnsound 于 2025-6-11 20:19 编辑

615行:
if(tim==3)
{
    if(!chg)
    {
        slw=1;
    }
    chg=0;
}

原代码中卸载一行,要注意slw=1和chg=0之间是分号。
如果分号换成逗号,就是这样了:
if(tim==3)
{
    if(!chg)
    {
        slw=1;
        chg=0;
    }
}

打赏

参与人数 1家元 +20 收起 理由
猪小呆 + 20

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2025-6-11 20:14:05 | 显示全部楼层
显然 是只执行“slw=1;”这一条!
if后面如果没有大括号,那么后面第一个分号就是if的结束范围。
回复 支持 反对

使用道具 举报

发表于 2025-6-11 21:56:58 | 显示全部楼层
我一般尽量分行多用{},一点其中一个{,看虚竖线就知道范围到哪里了。
回复 支持 反对

使用道具 举报

发表于 2025-6-12 09:07:36 | 显示全部楼层
mmxx2015 发表于 2025-6-11 21:56
我一般尽量分行多用{},一点其中一个{,看虚竖线就知道范围到哪里了。

为了以后自己看着不迷糊,渐渐的养成了写全括号的习惯,每次写if都是写好括号再写内容if(){},这样可以避免报错。
回复 支持 反对

使用道具 举报

发表于 2025-6-12 15:20:02 | 显示全部楼层
慕名而来 发表于 2025-6-12 09:07
为了以后自己看着不迷糊,渐渐的养成了写全括号的习惯,每次写if都是写好括号再写内容if(){},这样可以避 ...

而且有时候怕迷糊,if后哪怕就一行代码我都要大括号括起来。
回复 支持 反对

使用道具 举报

发表于 2025-6-12 19:29:21 | 显示全部楼层
xueyeteng 发表于 2025-6-12 15:20
而且有时候怕迷糊,if后哪怕就一行代码我都要大括号括起来。

一样一样的,一句代码也要扩起来,用这个方法写多层判断的按键代码就很少出错了。
回复 支持 反对

使用道具 举报

发表于 2025-6-12 21:27:50 | 显示全部楼层
先把代码格式 化后再阅读就比较好些
回复 支持 反对

使用道具 举报

发表于 2025-6-12 23:04:05 | 显示全部楼层
if else while do for 按照规定,作用域都是后边紧跟的首个;语句或首个{ } 块
回复 支持 反对

使用道具 举报

发表于 2025-6-16 23:06:51 | 显示全部楼层
有分号,只执行一条。第二个if的后面只有slw=1一句,大括弧省略了
回复 支持 反对

使用道具 举报

发表于 2025-6-19 20:33:16 来自手机浏览器 | 显示全部楼层
读别人的代码习惯放到vscode格式化一下再看,效率提升100%,再让ds加一下注释,效率又提升100%
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-19 20:55:23 | 显示全部楼层
飞向狙沙 发表于 2025-6-19 20:33
读别人的代码习惯放到vscode格式化一下再看,效率提升100%,再让ds加一下注释,效率又提升100% ...

不错,这方法好
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-22 20:33 , Processed in 0.296400 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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