第五章 库函数

返回整数的getchar函数

getchar函数在一般请工况下返回的是标准输入文件中的下一个字符。下面这段代码有什么问题?

#include <stdio.h>

main() {
	char c;

	while((c = getchar()) != EOF) 
		putchar(c));
}

变量c被声明为char类型,而不是int类型。这意味着c无法容下所有可能的字符。特别是EOF

最终可能出现两种结果:

第六章 预处理器

不能忽视宏定义中的的空格

在宏定义中,如果希望定义宏f(x)为((x)-1),则应该写成:

#define f(x) ((x)-1)

宏不是函数

我们现在想用宏来实现取绝对值的写法:

#define abs(x) (((x)>=0) ? (x):-(x))

请注意宏定义中出现的这些括号,它们的作用是预防引起与优先级有关的问题

如果宏被定义成了这个样子:

#define abs(x) x>0 ? x: -x