当我删除“%97”时,代码工作并打印出预期内容。就像输入是“a”那么它打印“f”,而当模97存在并打印空白时它不起作用。为什么在C中的printf函数不是模运算符?
这个问题背后的原因是什么?如何解决它?
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”。请解释。
你拥有的是[i] +(5%97)'。你想要'(s [i] +5)%97',我想。 –
我想你应该尝试使用括号,像这样'printf(“this is%c”,((s [i] +5)%97));' – Darkpingouin
了解运算符优先级 –