51单片机的一个赋值问题--数组

2020-01-27 11:27发布

本帖最后由 and001 于 2013-8-19 11:49 编辑

存在如下一个赋值问题:

我的目的是将一个4位数分别单独转换成数字显示出来:


方法一:

char i=1;
unsigned ring_lengther[2]={2023,6723};
unsigned ring_lengther;   
unsinged k2,

        ring_lengther=ring_length;
         k2= ring_length/1000;

         k3=ring_length%1000/100;
         k4=ring_length%100/10;
         k5=ring_length%10;

运行最后显示的是: 0000

方法二:

char i=1;
unsigned ring_length[2]={2023,6723};
unsigned ring_lengther;   
unsinged k2,

         ring_lengther=ring_length;
         k2= ring_lengther/1000;

         k3=ring_lengther%1000/100;
         k4=ring_lengther%100/10;
         k5=ring_lengther%10;

运行最后显示的是:K2=6  K3=7 K4=2  K5=3


请弄过的朋友解释下为啥方法一得不到所需要的结果?!

各抒己见!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
and001
1楼-- · 2020-01-29 17:29
本帖最后由 and001 于 2013-8-20 10:32 编辑

楼上误会了!确实剪切后粘贴就会掉""导致老丢,这几行代码本就是让人帮忙看得那还---值得遮遮掩掩吗!!!冤枉呀 !

请问楼上是用啥工具编译的,我是KEIL 提示输出 全是“0”


初始化为=1或者0,是我任意选的!我的目的是要都能访问就可以了!

albert_w
2楼-- · 2020-01-29 19:32
and001 发表于 2013-8-20 10:30
楼上误会了!确实剪切后粘贴就会掉""导致老丢,这几行代码本就是让人帮忙看得那还---值得遮遮掩掩吗!!! ...

在gcc 4.1.1 测试, 得到完全相同的结果. 事实上,任意编译器都应该得到正确的结果. 也许你的kx被优化了, 这部分操作是不存在任何疑问的,非常标准的.

你可以把你的完整测试代码放上来看,不要为了方便理解, 把它改得四不像, 这样只会增加沟通障碍.  如果你要简化到方便理解,请在keil里面修改好, 编译测试后再贴上来. 保证贴上来的代码和你测试的代码是完全一样的.否则... 大家都在做无用功.
请帖一份类似下面的代码上来:

Link: http://codepad.org/V6MDCDTn    [ raw code | output | fork ]       

C, pasted 1 hour ago:

#include<stdio.h>

int main(void) {
    unsigned char i=1;
    unsigned short ring_length[2]={2023,6723};
    unsigned short ring_lengther;
    unsigned char k2,k3,k4,k5;

    ring_lengther=ring_length;
    k2= ring_length/1000;

    k3=ring_length%1000/100;
    k4=ring_length%100/10;
    k5=ring_length%10;

    printf("k2:%d, k3:%d, k4:%d, k5:%d ", k2, k3, k4, k5);
    return 0;
}


Output:
1
k2:6, k3:7, k4:2, k5:3
takashiki
3楼-- · 2020-01-29 20:44
and001 发表于 2013-8-20 10:30
楼上误会了!确实剪切后粘贴就会掉""导致老丢,这几行代码本就是让人帮忙看得那还---值得遮遮掩掩吗!!! ...

态度极其不端正,遮遮掩掩就别找理由了

我只问你一句,
方法1的“运行最后显示的是: 0000”
和方法2的“运行最后显示的是:K2=6  K3=7 K4=2  K5=3”
是等价的吗?一个是0000我都不知道你到底想表达啥,另一个则是非常明确地K2、K3、K4、K5,而且大小写还不一样,你家的C编译器不区分大小写的?

xieguangye
4楼-- · 2020-01-30 02:43
 精彩回答 2  元偷偷看……
and001
5楼-- · 2020-01-30 07:17
我向各位检讨!!

后面的结果是我手敲的!是小写!抱歉各位兄弟!
and001
6楼-- · 2020-01-30 12:59
本帖最后由 and001 于 2013-8-20 12:10 编辑
albert_w 发表于 2013-8-20 11:23
在gcc 4.1.1 测试, 得到完全相同的结果. 事实上,任意编译器都应该得到正确的结果. 也许你的kx被优化了,  ...


非常感谢楼上指导!

一周热门 更多>