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。为什么这次不需要演员阵容?