找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2400|回复: 7
收起左侧

学习单片机C语言循环语句的问题

[复制链接]
ID:891876 发表于 2022-11-8 14:56 | 显示全部楼层 |阅读模式
左移、右移各循环8次,这样写对吗?有没有其它写法?

lr.JPG


回复

使用道具 举报

ID:883242 发表于 2022-11-8 17:24 | 显示全部楼层
8次是对的。至于左移右移没有代码无法判断。
回复

使用道具 举报

ID:1051062 发表于 2022-11-8 18:50 | 显示全部楼层
这样写是对的,也可以用while循环
回复

使用道具 举报

ID:624769 发表于 2022-11-8 20:25 | 显示全部楼层
从写法对错来讲, unsigned char 的声明,不能放在 while(1) 里面,而应该在 void main的开始处。

从循环的其他写法来讲。
void main()
{
         char i;
         i=0;
         while(1)
         {
                for(;i<8;i++)
                {
                        L_led();
                }
                for(;i>0;i--)
                {
                        R_led();
                }
          }
}
是一种取巧写法、同样,也可以 用while,可自行摸索。
回复

使用道具 举报

ID:883242 发表于 2022-11-8 20:58 | 显示全部楼层
188610329 发表于 2022-11-8 20:25
从写法对错来讲, unsigned char 的声明,不能放在 while(1) 里面,而应该在 void main的开始处。

从循 ...

显然你不懂C99标准,C语言都是跟谁学的?

同样是Keil界面,C51是不支持C99标准的,而RealView MDK是支持C99的。

在支持C99的编译器上,变量可以随用随定义,楼主的写法是正确的。而C51这样不支持C99的编译器变量定义必须在所有实际执行语句之前,而while属于实际执行语句,楼主的写法显然是错误的。
回复

使用道具 举报

ID:1050867 发表于 2022-11-9 08:35 | 显示全部楼层
这个写法是对的,也可以考虑在左移右移函数加一个传参,参数为移动的位数,可以让主函数变得简洁一些
回复

使用道具 举报

ID:891876 发表于 2022-11-9 10:34 | 显示全部楼层
hgig 发表于 2022-11-9 08:35
这个写法是对的,也可以考虑在左移右移函数加一个传参,参数为移动的位数,可以让主函数变得简洁一些

怎样写?可以提示一下吗?
回复

使用道具 举报

ID:891876 发表于 2022-11-9 10:34 | 显示全部楼层
chenshandeng 发表于 2022-11-8 18:50
这样写是对的,也可以用while循环

怎样写可以提示一下吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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