首先让我展示一下有什么用,然后我会展示什么不起作用。此代码给出了正确的结果。
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
这不是以同样的方式工作吗?那么当用户输入值时,我会得到不同的结果呢?谢谢!
答案 0 :(得分:0)
看起来控制台输出一个字符(即ASCII码),而不是整数。
只需在阅读循环中尝试d[i] = ConsoleGet() - '0';
。