これは古い慣習であり、コードのどこで問題が発生したかを特定しようとしています: putchar のみを使用して整数を出力する ac プログラムを作成します。私はそれを行う正しい方法の1つを知っています:
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');
}
なぜ私のやり方がうまくいかないのか知りたいのですが、ステップオーバーを使ってデバッグしようとしていたので、手順に問題はないように見えますが、コードは面白い文字を出力しています. putchar() が数値を ascii 値として読み取り、ascii 値に対応する文字を出力するためだと思いました。これが上記のコードで を使用している理由である可能性があるため、すべての putchar コードにputchar(n%10+'0')
追加しようとしましたが、'0'
正しく動作しません。だからここに私のコードと結果があります'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);
}