c语言float变量和字符串转换占内存大小问题

2019-03-24 16:59发布

本帖最后由 dinghao1 于 2018-7-26 10:47 编辑

1.不进行字符串转换,程序大小48B
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #define uchar unsigned char
  4.         
  5. float fengsu;
  6. long  guang;
  7. uchar str[10];
  8.         void display1()
  9.     {
  10.         guang=60000;
  11.                         //  sprintf(str,"%5ld",guang);
  12.                         }
  13.         void display2()
  14.     {
  15.                         fengsu=12.34;
  16.                 //        sprintf(str,"%5.2f",fengsu);
  17.                 }
  18. void main()
  19. {
  20.         while(1)
  21.         {        
  22.     display1();
  23.                 display2();
  24.         }
  25. }
复制代码


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
dinghao1
1楼-- · 2019-03-25 00:12
 精彩回答 2  元偷偷看……
dinghao1
2楼-- · 2019-03-25 03:16
3,float变量不进行转换,程序大小2559B
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #define uchar unsigned char
  4.        
  5. float fengsu;
  6. long  guang;
  7. uchar str[10];
  8.         void display1()
  9.     {
  10.         guang=60000;
  11.                           sprintf(str,"%5ld",guang);
  12.                         }
  13.         void display2()
  14.     {
  15.                         fengsu=12.34;
  16.                         //sprintf(str,"%5.2f",fengsu);
  17.                 }
  18. void main()
  19. {
  20.         while(1)
  21.         {       
  22.     display1();
  23.                 display2();
  24.         }
  25. }
复制代码


dinghao1
3楼-- · 2019-03-25 05:23
4,删掉float变量,只有长整数转换,程序大小1110B
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
       
float fengsu;
long  guang;
uchar str[10];
        void display1()
    {
        guang=60000;
                          sprintf(str,"%5ld",guang);
                        }
        void display2()
    {
                        //fengsu=12.34;
                        //sprintf(str,"%5.2f",fengsu);
                }
void main()
{
        while(1)
        {       
    display1();
                display2();
        }
}

dinghao1
4楼-- · 2019-03-25 10:21
 精彩回答 2  元偷偷看……
freebsder
5楼-- · 2019-03-25 13:49
多了sprintf代码尺寸当然要大,这个函数本身本来就不小。浮点在没有硬件浮点的U上是通过软件来适配的,你看不见但背后由编译器帮你做了这事。
dinghao1
6楼-- · 2019-03-25 17:24
freebsder 发表于 2018-7-26 14:44
多了sprintf代码尺寸当然要大,这个函数本身本来就不小。浮点在没有硬件浮点的U上是通过软件来适配的,你看 ...

那有没有小一点的函数适合把变量数字转换成字符然后通过12864液晶屏显示呢,下面是一段显示程序english(2,4,5,str)是在第二行第四个字开始显示str的5个字符

  1. write(0,0x01);
  2. english(2,1,15,table3);//光照
  3. guang=6000;
  4. guang=guang*10;
  5. sprintf(str,"%5ld",guang);
  6. english(2,4,5,str);
复制代码





一周热门 更多>