为什么模运算符不能在 C 中的 printf 函数中工作?

Why isn't modulo operator working inside printf function in C?

当我删除“%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"。请解释。

我想你想写:

(s[i] + 5) % 97

你写的表情:

s[i] + 5 % 97

等同于:

s[i] + (5 % 97)

即运算符%的优先级高于+.

您正在将 5 % 97 添加到代码中的 s[i],即 5