1. 程式人生 > 實用技巧 >寫出下面各邏輯表示式的值。設a=3,b=4,c=5 (1)a + b > c && b == c (2)a || b + c && b - c (3)!(a > b) && !c || 1 (4)!(x = a) && (y = b) && 0 (5)!(a + b) + c - 1 &

寫出下面各邏輯表示式的值。設a=3,b=4,c=5 (1)a + b > c && b == c (2)a || b + c && b - c (3)!(a > b) && !c || 1 (4)!(x = a) && (y = b) && 0 (5)!(a + b) + c - 1 &

寫出下面各邏輯表示式的值。設a=3,b=4,c=5。

(1)a + b > c && b == c

(2)a || b + c && b - c

(3)!(a > b) && !c || 1

(4)!(x = a) && (y = b) && 0

(5)!(a + b) + c - 1 && b + c / 2

解題思路:

  1. 關係運算符的優先順序高於賦值運算子,但是低於算術運算子;
  2. &&表示兩邊條件同為真則成立,||表示兩邊條件任意一個為真則成立,!取條件反義。
  3. 邏輯運算子優先順序: ! > && > ||
  4. 有括號優先括號。
3.1 題目:a + b > c && b == c -> 3+4>5&&4==5

解析: 3+4>5 優先3+4得到結果7,因此7>5結果為真; 4==5為假,一真一假邏輯與最終結果為假。

答案: 0

#include <stdio.h>
int main()
{
	int a = 3, b = 4, c = 5;
	printf("%d\n", a || b + c && b - c);
	system("pause");//這一句是為了讓控制檯不退出
	return 0;
}

3.2 題目:a || b + c && b - c -> 3||4 + 5 && 4-5

解析: 優先算術運算4+5得到7,非0則為真,4-5得到-1,非0則為真,接下來邏輯與判斷,最終邏輯或判斷

答案: 1

#include <stdio.h>
int main()
{
	int a = 3, b = 4, c = 5;
	printf("%d\n", a || b + c && b - c);
	system("pause");//這一句是為了讓控制檯不退出
	return 0;
}

3.3 題目:!(a > b) && !c || 1 -> !(3>4) && !5 || 1

**解析: ** !優先順序最高,!(3>4)最終結果為真,!5為假; 其次 &&,真&&假得到假,最終||,1為真,假或真為真

答案: 1

#include <stdio.h>
int main()
{
	int a = 3, b = 4, c = 5;
	printf("%d\n", !(a > b) && !c || 1);
	system("pause");//這一句是為了讓控制檯不退出
	return 0;
}

3.4 題目:!(x = a) && (y = b) && 0 -> !(x=3) && (y=4)&&0

解析: 這裡&&優先順序最低是最後一個邏輯運算,因此不管如何,最終&&0,則肯定為假

答案: 假-0

#include <stdio.h>
int main()
{
	int a = 3, b = 4, c = 5;
	int x, y;
	printf("%d\n", !(x = a) && (y = b) && 0);
	system("pause");//這一句是為了讓控制檯不退出
	return 0;
}

3.5 題目:!(a + b) + c - 1 && b + c / 2 -> !(3+4)+5-1 && 4+5/2

解析: 在vs中優先對(a+b)取非得到0,0+5-1結果為4,因此最終為真(此題涉及不同平臺結果不同的問題,因為在有的平臺下編譯器會優先算術運算,則最終取非得到結果為假)

**答案: ** 1

#include <stdio.h>
int main()
{
	int a = 3, b = 4, c = 5;
	printf("%d\n", !(a + b) + c - 1);
	printf("%d\n", !(a + b) + c - 1 && b + c / 2);
	system("pause");//這一句是為了讓控制檯不退出
	return 0;
}