找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

这串C语言代码能不能在优化一下?

查看数: 1438 | 评论数: 14 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-10-4 02:39

正文摘要:

谢谢大虾

回复

ID:1134818 发表于 2024-10-27 19:37
1.去掉只有一句的if的括号
2.去掉没有用的if,比如12行、17行两对
3.把aa和bb写成a[0]和a[1],其他对应也写成数组,用个for
4.4个位也可以用数组+for
ID:401564 发表于 2024-10-7 10:52
循环用取模表达式,代码字母不可能不会少,但行数变少了
temp = (temp + 1) % 10000;
变量aa和bb如果是循环变化,同样也可以用取模
ID:1109793 发表于 2024-10-6 13:27
shenqiwei 发表于 2024-10-6 04:57
我的意思是IF能不能同时判断AA,BB。这样代码量就会很少

不懂同时怎样判断。把BCD那部分弄个函数,就很简洁了。

  1. uchar bcd[4],bcd2[4];
  2. void ibtd(uint i,uchar* mem){ //取余法获得BCD码
  3. uchar j;
  4. for(j=2;j<255;j--){                          
  5.         mem[j]=i%10;
  6.     i=i/10;
  7.     }   
  8. }
复制代码
ID:879348 发表于 2024-10-6 10:25
千百十个的运算做成一个函数,程序看上去会简洁点
ID:278457 发表于 2024-10-6 04:59
188610329 发表于 2024-10-5 23:28
你要优化什么?
优化 C 语句看上去的简洁程度?
还是代码执行效率?

我要C语句,简洁程度。
ID:278457 发表于 2024-10-6 04:57
xiaobendan001 发表于 2024-10-5 07:52
你这看起来简化了,编译出来可不一定吧

我的意思是IF能不能同时判断AA,BB。这样代码量就会很少
ID:624769 发表于 2024-10-5 23:28
你要优化什么?
优化 C 语句看上去的简洁程度?
还是代码执行效率?
变量的占用量?
还是排版上毫无意义的一大堆括号?
ID:579397 发表于 2024-10-5 14:41
黄youhui 发表于 2024-10-5 08:08
将if判断语句那里换成==就是正解。

手快写漏了
ID:1109793 发表于 2024-10-5 09:12
405616736 发表于 2024-10-5 03:46
int str[4]
       
if(aa==20)

而且你这个sprintf输出的字符,不是BCD码吧。这样要是显示到比如数码管上面还得再处理一下吧。
ID:592807 发表于 2024-10-5 08:08
405616736 发表于 2024-10-5 03:46
int str[4]
       
if(aa==20)

将if判断语句那里换成==就是正解。
ID:1109793 发表于 2024-10-5 07:52
405616736 发表于 2024-10-5 03:46
int str[4]
       
if(aa==20)

你这看起来简化了,编译出来可不一定吧
ID:579397 发表于 2024-10-5 03:46
本帖最后由 405616736 于 2024-10-5 23:30 编辑

int str[4]
        
if(aa==20)
        {
                aa=0;
                if(++temp==9999) temp=0;
                sprintf(str,"%04d",temp);        }


ID:278457 发表于 2024-10-5 01:59
xiaobendan001 发表于 2024-10-4 14:26
BCD码放数组里面,然后弄个函数,把数组地址和数据传进去,里面用一个循环搞定,这样应该简化不少吧。
大 ...

最好还是用语法搞定
ID:1109793 发表于 2024-10-4 14:26
BCD码放数组里面,然后弄个函数,把数组地址和数据传进去,里面用一个循环搞定,这样应该简化不少吧。
大概类似这种代码编译器好像也可以帮你简化。就是实际上出来的HEX并不大。

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

Powered by 单片机教程网

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