新人小白求解释
c4droid吧
全部回复
仅看楼主
level 9
Dearestslow 楼主
#define TOUPPER(c) (*a*<=(c)&&(c)<=*z*?(c)-*a*+*A*:(c))
那个问号是什么意思
这个宏又是什么意思
    ------请叫我Dearestslow SAMA。
2014年09月24日 14点09分 1
level 12
问号和后面的:号构成选择表达式,作用判断C是否是小写字母,是则转换成大写字母,否则不变
2014年09月24日 15点09分 2
没怎么懂啊 楼下这 答案是。。。。
2014年09月24日 15点09分
a<=c并且c<=z 然后问号后面是什么意思啊
2014年09月24日 15点09分
level 9
Dearestslow 楼主
假设宏定义如下:
#define TOUPPER(c) (*a*<=(c)&&(c)<=*z*?(c)-*a*+*A*:(c))
设s是一个足够大的字符数组,i是int型变量,则以下代码段的输出是:
strcpy(s, "abcd");
i = 0;
putchar(TOUPPER(s[++i]));
    ------请叫我Dearestslow SAMA。
2014年09月24日 15点09分 3
为什么输出的是D啊
2014年09月24日 15点09分
level 9
三目运算符,回去看书
2014年09月24日 15点09分 4
噢。。
2014年09月24日 15点09分
level 1
这样说吧,宏是一种文本的转换,可以这样理解。因此这里s[++i]作为参数,转换后就是
putchar(('a'<=(s[++i])&&(s[++i])<='z'?(s[++i])-'a'+'A':(s[++i])) );
也就是说++i进行了三次,所以最后应该是s[3]也就是D
2020年07月14日 07点07分 5
1