[英]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.