簡體   English   中英

邏輯AND運算子

[英]Logical AND operator

我對邏輯AND運算符有點困惑。 我有這兩行代碼。 這里numj都是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));
} 

您的代碼運行良好,請看以下測試用例:

http://ideone.com/1gz8R

因此,問題不在於這兩行。 在進入這些行之前,嘗試打印涉及的三個值,您可能會對所看到的(或看不到的)感到驚訝。

您還應該養成自由使用括號的習慣,imo:

if(k == 1 && (num % j == 0))

至少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM