第二题----
切忌和函数混淆,宏定义是是文本替代。
#include <stdio.h>
#include <string.h>
#define TOUPPER(c) ('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c))
int main() {
char s[80];
strcpy(s, "abcd");
int i = 0;
putchar(TOUPPER(s[++i]));
}
D
--------------------------------
Process exited after 0.05056 seconds with return value 0
请按任意键继续. . .
注意在上面的程序中,putchar(TOUPPER(s[++i]));这一步是不会对i++的,因为这一步也算在文本替代中。
等价于下面的程序---
#include <stdio.h>
#include <string.h>
int main() {
char s[80];
strcpy(s, "abcd");
int i = 0;
putchar('a'<=(s[++i])&&(s[++i])<='z'?(s[++i])-'a'+'A':(s[++i]));
}
D
--------------------------------
Process exited after 0.04504 seconds with return value 0
请按任意键继续. . .
还有一个知识点就是判断语句
#include <stdio.h>
int max(int a,int b);
int main() {
int a=5;
int b=6;
printf("%d\n",max(a,b));
}
int max(int a,int b)
{
return (a>b?a:b);
}
其实就相当于if-else语句,使用起来确实方便。