如何在C中编写从a到z和A到Z的单个for循环?

kob*_*obe 9 c

我想将for循环组合成单个for循环.我怎样才能做到这一点?

我想循环遍历a到z,以及A到Z,如下所示:

char ch;
for (ch = 'A' ; ch <= 'Z' ; ch++ )
{ 
}
for (ch = 'a' ; ch <= 'z' ; ch++ )
{
}
Run Code Online (Sandbox Code Playgroud)

但是使用单个循环.

Bil*_*eal 23

for (char ch = 'A' ; ch <= 'z' ; ch == 'Z' ? ch = 'a' : ++ch )
{
}
Run Code Online (Sandbox Code Playgroud)

应该工作 - 虽然请,请不要对你的开发人员造成这种情况.


Ern*_*ill 22

我个人不喜欢这个解决方案,但是:

char * letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for (char * ptr = letters; *ptr != 0; ++ptr) {
    char ch = *ptr;
    ...
} 
Run Code Online (Sandbox Code Playgroud)

  • 嗯,我实际上不喜欢这种方法比利斯.它的可读性较差(您是否会注意到像这样的魔术字符串中缺少字符,或者注意到异常的顺序?),它可能更慢,而且甚至不会更短.并不是说这么简单的情况真的很重要...... (2认同)