当我删除"%97"时,代码便发挥作用并打印出预期的结果。比如说,如果输入是"a",那么它会打印出"f",而当使用模97时则无法正常工作,只会输出空格。
这个问题背后的原因是什么?如何解决它?
int main(void)
{
char *s = get_string();
for(int i = 0; i<strlen(s); i++)
printf("this is %c", (s[i]+5%97));
}
编辑:大家好,在添加括号后,即更改我的最后一行为“(s[i]+5)%97”后,程序的运行不如预期。当输入“a”时,输出应该是“f”,但实际上是空格。
当我输入“A”时,我得到的是“F”!发生了什么?这个程序的目的是将“a”转换为“a+5”,但它却将“A”转换为“A+5”。请解释一下。
printf("this is %c", ((s[i]+5)%97));
。 - Darkpingouin\0
代表的Z
,这不会打印出任何有用的东西。 - Dietrich Epp