gpt4 book ai didi

c - 为什么减法对第一个 if 起作用而对第二个不起作用?

转载 作者:行者123 更新时间:2023-11-30 14:22:52 25 4
gpt4 key购买 nike

在每个 if 语句的最后一行,'ciphered_text' 中的当前数组元素减去 26。然而,这似乎只适用于第一部分,而不适用于第二部分。谁能明白为什么吗?顺便说一句,任何人都可以告诉我是否应该在这里使用 else if 或 else 。谢谢。

    for(arrayelement = 0; arrayelement < size; arrayelement++)
{
ciphered_text[arrayelement] = (plain_text[arrayelement]);
if ((int)(ciphered_text[arrayelement]) >= 65 && (int)(ciphered_text[arrayelement]) <= 90)
{
ciphered_text[arrayelement] = (int)(ciphered_text[arrayelement]) + shiftkey;
if (ciphered_text[arrayelement] > 90)
ciphered_text[arrayelement] = (int)(ciphered_text[arrayelement]) - 26;

}

else if ((int)(ciphered_text[arrayelement]) >= 97 && (int)(ciphered_text[arrayelement]) <= 122)
{
ciphered_text[arrayelement] = (int)(ciphered_text[arrayelement]) + shiftkey;
if (ciphered_text[arrayelement] > 122)
ciphered_text[arrayelement] = (int)(ciphered_text[arrayelement]) - 26;
}
}

最佳答案

我认为 ciphered_textchar[N]char*

失败的可能原因是

(int)(ciphered_text[arrayelement]) + shiftkey;

大于 127,当它存储在 char (ciphered_element[arrayelement]) 中时,它会转换为负值。 (注意:如果 char 有符号,则超出范围的值到 char 的转换是实现定义的。)

最简单的解决方法是将类型更改为unsigned char

关于c - 为什么减法对第一个 if 起作用而对第二个不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13416698/

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