返回整数的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