[英]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]
代碼中的s[i]
為5 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.