我正在尝试同时生成一个包含大写和小写字母的数组.
我理解生成两个单独的字母案例背后的逻辑.
rand() % 26 + 65 // generate all the uppercase letter
Run Code Online (Sandbox Code Playgroud)
而
rand() % 26 + 97 // generate all the lowercase letter
Run Code Online (Sandbox Code Playgroud)
我试着谷歌搜索如何一起生成它们,这就是我得到的.
rand() % 26 + 65 + rand() % 2 * 32 // generate both upper and lowercase letter
Run Code Online (Sandbox Code Playgroud)
不幸的是,他们并没有完全解释其背后的逻辑,我不想盲目地将其复制并粘贴到我的作业中.rand() % 2 * 32在将第二个添加rand()到第一个中时,一直在寻找高低的逻辑rand().
任何帮助将不胜感激.
观察到和32之间的差异,即大写和小写字母的ASCII代码之间的差异.6597
现在让我们rand() % 26 + 65 + rand() % 2 * 32分开:
rand() % 26 + 65 生成一个随机的大写字母;rand() % 2 * 32生成0或者32,从而将大写字母转换为小写字母的一半.重写此表达式的另一种更详细的方法是:
letter = rand() % 26 + 65;
if (rand() % 2) {
letter += 32;
}
Run Code Online (Sandbox Code Playgroud)