使用宏转换为大写

fud*_*din 0 c

我已经被赋予了一个任务,通过使用宏来将小写字符转换为大写.问题是我从未被引入宏.我只知道它的名字#define名称大小..请任何人都可以指导我这个问题

Bri*_*per 6

上面的答案也会改变不是字母的东西.也许...

#define LOWERTOUPPER(x) (('a' <= (x) && (x) <= 'z') ? ((x - 'a') + 'A') : (x))
Run Code Online (Sandbox Code Playgroud)

虽然如果调用它会带来麻烦

LOWERTOUPPER(*p++);
Run Code Online (Sandbox Code Playgroud)

并且也不适合EBCDIC字符集.所有这一切都证明了这种事情是一个坏主意.


Toa*_*ast 5

最简单的方法是这样的:

#define LOWERTOUPPER(x) ((x - 'a') + 'A')
Run Code Online (Sandbox Code Playgroud)

然后,您将使用以下函数:

character = LOWERTOUPPER('z');
Run Code Online (Sandbox Code Playgroud)

这会导致字符变量保持'Z'.