上面的答案也会改变不是字母的东西.也许...
#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字符集.所有这一切都证明了这种事情是一个坏主意.
最简单的方法是这样的:
#define LOWERTOUPPER(x) ((x - 'a') + 'A')
Run Code Online (Sandbox Code Playgroud)
然后,您将使用以下函数:
character = LOWERTOUPPER('z');
Run Code Online (Sandbox Code Playgroud)
这会导致字符变量保持'Z'.