#define BUFSIZE 100 char buf[BUFSIZE]; int bufp = 0; int getch(void) { return (bufp > 0)? buf[--bufp] : getchar(); } void ungetch(int c) { if(bufp >= BUFSIZE) printf("ungetch: too many characters "); else buf[bufp++] = c; } #include<stdio.h> int main() { printf("%c %c", getch(), getch()); }
形如-->printf("%c %c", getch(), getch());
----整型数会被强制转化为对应的字符(ascii)输出。
而-->return (bufp > 0)? buf[--bufp] : getchar();
中,由getchar()所读入的字符也会转化为相应的整形数 作为 getch()函数的返回值。
ungetch(int c)函数也是同理,参数是整型,但是允许输入字符,自动转化为对应整型数。
#include<stdio.h> int main() { char c; c = 97; printf("%c", c); }
上面的代码可以正常运行,输出结果是 a
所以 当读入一个超大整数 到buf 时会怎么样呢?