注册 登录
编程论坛 C语言论坛

有没有大神帮忙解释一下这题是怎么解的? 有关于 宏

白白白小白 发布于 2021-11-27 19:21, 1593 次点击
假设宏定义如下:
#define TOUPPER(c) ('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c))

设s是一个足够大的字符数组,i是int型变量,则以下代码段的输出是:

strcpy(s, "abcd");
i = 0;
putchar(TOUPPER(s[i]));

// 要是能讲解一下define和strcpy两行代码的意思就更好了, 非常感谢!
2 回复
#2
apull2021-11-28 12:33
TOUPPER(s[i])
s[i]带入宏里:
('a'<=(s[i])&&(s[i])<='z'?(s[i])-'a'+'A':(s[i]))
i=0时,s[i]='a':
('a'<=('a')&&('a')<='z'?('a')-'a'+'A':('a'))
结果就是小写字母转成大写字母


strcpy(a,b),是把字符串b复制到a。
#3
白白白小白2021-11-29 15:04
回复 2楼 apull
懂了,谢谢!
1