簡體   English   中英

C語言中的邏輯表達式

[英]Logical expression in C

我被班上的以下問題困擾。 使用優先級,解決以下邏輯表達式: 1 && -1 * -3-4 <5 && 6 <= 7> = 8!= 9/10> 0
我首先按照以下步驟進行操作
-> 1 && -1 * -3-4 <5 && 6 <= 7> = 8!= 9/10> 0
-> 1 && 3-4-5 <&&6 <= 7> = 8!= 1> 0
-> 1 && -1 <5 && 6 <= 7> = 8!= 1> 0
-> 1 && 1 && 1> = 8!= 1> 0
-> 1 && 1 && 0!= 1> 0
-> 1 && 1 && 0!= 1
-> 1 && 1 && 1
-> 1,所以我想答案是1,但是當我使用C程序嘗試時,答案是0。(代碼如下所示)。


#include <stdio.h>
int main(int argc, char* argv[]){
    int x = 1 && -1 * -3 - 4 < 5 && 6 <= 7 >= 8 != 9 / 10 > 0;
    printf("1 && -1 * -3 - 4 < 5 && 6 <= 7 >= 8 != 9 / 10 > 0 = %d\n", x);
    return 0;
}

在c中,整數除法不進行任何舍入。 因此9/10為0,余數為9,余數被/運算符拋出(對於%運算符,反之亦然)。 這段代碼的結果為1,就像您期望的那樣:

#include <stdio.h>
int main(int argc, char* argv[]){
    int x = 1 && -1 * -3 - 4 < 5 && 6 <= 7 >= 8 != 10 / 10 > 0;
    printf("1 && -1 * -3 - 4 < 5 && 6 <= 7 >= 8 != 10 / 10 > 0 = %d\n", x);
    return 0;
}

請注意C中運算符的優先級(就像數學中的pemdas規則):

* / % + - << >> < <= > >= == != 

最正確的表達

6 <= 7 >= 8 != 9 / 10 > 0 

計算為0。並且您使用&&邏輯表達式,因此期望整個表達式的結果為0。

暫無
暫無

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

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