誰でも unetch の目的を説明できますか? これは、逆ポーランド電卓を作成する K&R の第 4 章からのものです。
ungetch を呼び出さずにプログラムを実行しましたが、テストでも同じように動作します。
 int getch(void) /* get a (possibly pushed back) character */
    {
        if (bufp > 0)
        {
            return buf[--bufp];
        }
        else
        {
            return getchar();
        }
    }
    void ungetch(int c) /* push character back on input */
    {
        if (bufp >= BUFSIZE)
        {
            printf("ungetch: too many characters\n");
        }
        else
        {
            buf[bufp++] = c;
        }
}
(わかりやすくするために、getch の三項演算子を削除しました。)