如何解决为什么“f”和“g”ASCII字符在这段代码中变成负数?
#include <stdio.h>
/*************** CAESAR CYPHER *****************
-Take a charater array input
-Loop through 26 character shifts
-Print all possibilities
************************************************/
void Brute_Force(char *message)// Character array pointer
{
char *i;// copy message for iteration: Stop at '/0'
int j;// Iterate through the alphabet
char t;//Temp variable for current letter
for(j = 0; j < 26; j++)
{
printf("\n----------Shift %i----------\n",j);//Aesthetics
for(i = message; *i != '\0'; i++)
{
//Multiple of 26 to start at original message
unsigned char t = ((*i + j)%26) + 104;
// Only loop 97 to 122. ASCII 'a'-'z'
if(t > 122){t = t - 26;}
printf("%c",t);
}
}
}
int main()
{
char mess[26] = "ynkooejcpdanqxeykjrbdofgkq";
Brute_Force(mess);
return 0;
}
在将 t
更改为 unsigned char
而不是常规的 char
之前,每次出现 'f'(102) 或 'g'(103) 时,它都会输出 { {1}} 而不是 t = -127/-128
。我只是想知道是什么导致它变成负面的。仅适用于 'f' 和 'g',其他所有字母都是正确的。
示例输出为:
127/128
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。