當我刪除「%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
瞭解運算符優先級 –