这是一种古老的做法,我试图找出我的代码哪里出错了:编写 ac 程序以仅使用 putchar 打印一个整数。我知道一种正确的方法是:
void printnumber(int n)
{
if (n < 0) {
putchar('-');
n = -n;
}
if (n == 0)
putchar('0');
if (n/10)
printnumber(n/10);
putchar(n%10 + '0');
}
我只是想知道为什么我的方法不起作用,尽管当我尝试使用 step over 进行调试时,看起来我的程序没有问题,但是,代码正在打印一些有趣的字符。我认为这是因为 putchar() 将数字读取为 ascii 值并打印与 ascii 值对应的字符,也许这就是为什么在上面的代码中,我们使用putchar(n%10+'0')
,所以我尝试添加'0'
到我所有的 putchar 代码中,但是它不能正常工作。所以这是我的代码和结果,'0'
当 i=-123 时没有和
void printnumber(int i)
{
if(i/10!=0)
{
putchar(i%10);
printnumber((i-i%10)/10);
}
else if((i/10==0) && (i%10!=0) && (i>0))
putchar(i%10);
else if((i/10==0) && (i%10!=0) && (i<=0))
putchar(-i%10);
}