繁体   English   中英

为什么模运算符不在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 % 97s[i]代码中的s[i]5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM