gpt4 book ai didi

c++ - C++中的字符移位

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:34 25 4
gpt4 key购买 nike

我尝试编写一个函数来对字符进行简单的移动(向左或向右移动,具体取决于以下函数中的 shift 参数)。大写字母仍然是大写字母。这是我的方法:

char encodeCaesarCipherChar(char ch, int shift)
{
char result;
if (!isalpha(ch)) return ch;

result = ch + shift;

if (islower(ch) && result < 'a') {
result += int('z') - 1;
result -= int('a');
} else if (islower(ch) && result > 'z') {
result -= int('z');
result += int('a') - 1;
} else if (isupper(ch) && result < 'A') {
result += int('Z') - 1;
result -= int('A');
} else if (isupper(ch) && result > 'Z') {
result -= int('Z');
result += int('A') - 1;
}

return result;
}

当输入字符为's'及以上时,该函数将停止正常工作。谁能指出我的方法有什么问题?

提前致谢。

最佳答案

's' + 13 将溢出一个带符号的 char。将结果保存在 int 中,并在调整数字后返回之前转换为 char

关于c++ - C++中的字符移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18800388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com