标题: 关于取数的问题,请高人指点 [打印本页]

作者: cyy998    时间: 2016-7-8 15:38
标题: 关于取数的问题,请高人指点
本帖最后由 cyy998 于 2016-7-8 15:45 编辑

从一个4位整数中取出各位上的数,以下两段代码,运行的结果是一样的,第一段编译后体积比第二段小一点,但是不知道执行效率哪一段比较高一点?本人初学单片机,对C语言更是一知半解,请高人给指点一下,在此谢过,不胜感激。

第一段用for循环的方式:
  1. uchar df[4];
  2. char i;
  3. uint j;
  4. j=temp;
  5. if(temp<0)j=-temp;                //如果是负数转换成正数
  6. for(i=3;i>=0;i--)
  7.         {
  8.                 df[i]=j%10;
  9.                 j/=10;
  10.         }
复制代码


第二段用直接取值的方式:
  1. uchar df[4];
  2. uint j;
  3. j=temp;
  4. if(temp<0)j=-temp;                //如果是负数转换成正数
  5. df[0]=j/1000;                                        //取千位
  6. df[1]=j%1000/100;                              //取百位
  7. df[2]=j%100/10;                                  //取十位
  8. df[3]=j%10;                                         //取个位
复制代码






作者: 腾飞的龙    时间: 2016-7-8 16:04
我都是用第二种,第一次看到第一种写法,学习啦、
作者: zl2168    时间: 2016-7-8 21:54
第一种方法很好。
作者: liuyimao485812    时间: 2016-7-9 06:37
第1种比较好。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1