簡體   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