题目来自浙大翁凯老师mooc -> 12.2 编译预处理和宏 -> 练习
题目描述如下:
假设宏定义如下:
#define TOUPPER(c) ('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c))
设s是一个足够大的字符数组,i是int型变量,则以下代码段的输出是:
strcpy(s, "abcd"); i = 0; putchar(TOUPPER(s[++i]));
因此按照宏定义,写出如下代码验证:
#include <stdio.h>
#include <string.h>
#define TOUPPER(c) ('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c))
int main()
{
int i;
char s[20] = {0};
strcpy(s, "abcd");
i = 0;
putchar(TOUPPER(s[++i]));
return 0;
}
其中输出行按宏定义,等价于
putchar('a'<=(s[++i])&&(s[++i])<='z'?(s[&#