Can someone please help me understand the code in bold below?

I can't understand what it's doing...

Code:#include <ctype.h> #include <stdio.h> int getch(void); void ungetch(int); /* getint: get next integer from input into *pn */ int getint(int *pn) { int c, sign; while (isspace(c = getch()));/* skip white space */ if (!isdigit(c) && c != EOF && c != '+' && c != '-') { ungetch(c); /* it's not a number */ return 0; } sign = (c == '-') ? -1 : 1; if (c == '+' || c == '-') c = getch();for (*pn = 0; isdigit(c); c = getch()) *pn = 10 * *pn + (c - '0'); // This is what I don't get... *pn *= sign;if (c != EOF) ungetch(c); return c; }