K&R 提供了这个getchar()
例子:
int getchar(void)
{
char c;
return (read(0, &c, 1) == 1) ? (unsigned char) c : EOF;
}
c
被强制转换到unsigned char
这里以避免符号扩展问题,但在fputs()
示例中......
int fputs(char *s, FILE *iop)
{
int c;
while (c = *s++)
putc(c, iop);
return ferror(iop) ? EOF : 0;
}
*s
被分配给 aint
而没有首先转换为 a unsigned char
。为什么这次不需要演员阵容?