[英]Logical AND operator
我對邏輯AND運算符有點困惑。 我有這兩行代碼。 這里num
和j
都是int。 我遇到了兩個條件都滿足的情況,但是我不知道為什么它沒有打印j
的值。 有人可以指出錯誤嗎? 提前致謝。
if(k==1 && num%j==0)
printf("%d",j);
用簡單的英語來說,當且僅當k
等於1 且將num
除以j
的余數為0時,表達式k == 1 && num % j == 0
才是正確的。
這里有兩種可能性。 要么您永遠不會進入printf
,要么輸出永遠不會到達您。
對於第一種情況,您確定k == 1
並且num % j == 0
嗎? 在測試中提供實際的數值可能會有所幫助。 請注意,如果k
是計算結果的浮點數,則可能與1.0略有出入,條件將返回false。
對於第二種情況,您如何測試呢? 那應該打印出j
的值,但是不會刷新輸出,因此,如果程序異常終止或控制台在程序末尾消失,或者您可能看不到它。 嘗試printf("%d\\n", j);
甚至fflush(stdout);
確保輸出在控制台或終端上可見。
如果條件為真,則代碼中沒有問題。
在此處檢查輸出。
您可能還想添加else語句。 我無法數出這種情況發生在我身上的次數。 至少在編碼初期,這是一個好習慣。 做這個:
這將幫助您發現問題
if(k==1 && num%j==0)
printf("%d",j);
else {
printf("%d \n",k);
printf("%d \n",num);
printf("%d \n",j);
printf("%d \n",(num%j));
}
您還應該養成自由使用括號的習慣,imo:
if(k == 1 && (num % j == 0))
至少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.