0

首先让我展示什么是有效的,然后我将展示什么是无效的。这段代码给出了正确的结果。

unsigned long timeOn;
long d[10];

d[0] = 8;
d[1] = 6;
d[2] = 0;
d[3] = 0;
d[4] = 0;
timeOn = 10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] +  d[4] ;
printf("%lu",timeOn);

输出:86000

如果我希望用户输入以下值,我会得到不同的结果,这就是我拥有的代码。

unsigned long timeOn;
long d[10];
int i;


 for(i = 0; i < 5 ; i++)
    {
        while (!ConsoleIsGetReady());
        d[i] = ConsoleGet();

    }

timeOn = 10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] +  d[4] ;
printf("%lu",timeOn);

BYTE ConsoleGet(void)
{
    char Temp;

    while(IFS1bits.U2RXIF == 0);

    Temp = U2RXREG;
    IFS1bits.U2RXIF = 0;
    return Temp;
}

输出:619328

这不应该以同样的方式工作吗?那么当用户输入值时我得到不同的结果怎么办?谢谢!

4

1 回答 1

0

看起来控制台输出一个字符(即 ASCII 码),而不是一个整数。只需尝试d[i] = ConsoleGet() - '0';您的读取循环。

于 2013-05-07T15:18:57.750 回答