当我删除“%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”。请解释一下。
答案 0 :(得分:7)
我想你想写:
(s[i] + 5) % 97
你写的表达式:
s[i] + 5 % 97
与:
相同s[i] + (5 % 97)
即,运算符%
的优先级高于+
。
您正在代码中将5 % 97
5 添加到s[i]
。