现在的位置: 首页 > 03 分支结构 > 正文

深入理解逻辑表达式

2012年01月04日 03 分支结构 ⁄ 共 271字 ⁄ 字号 暂无评论

逻辑表达式和运算符的优先级是考试的常考内容。

百度百科 逻辑表达式

用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子称为逻辑表达式。逻辑表达式的值是一个逻辑值,即“true”或“false”。C语言编译系统在给出逻辑运算结果时,以数字1表示“真”,以数字0表示“假”,但在判断一个量是否为“真”时,以非0表示“真”,以0表示“假”。可以将逻辑表达式的运算结果(0或1)赋给整型变量或字符型变量。

1
2
3
4
5
6
7
8
#include <stdio.h>
int main(int argc, char *argv[])
{
	int a, b, c;
	c = 10 + 12<3 -2;
	printf("%d\n", c);
	return 0;
}

输出结果是 0。

由于 + 和 - 的优先级高于 > < == 等比较运算符,所以 c = (10+12)<(3-2),进一步化简为 c = 22 < 1,这个逻辑表达式不成立,所以运算结果为 0。

1
2
3
4
5
6
7
8
#include <stdio.h>
int main(int argc, char *argv[])
{
	int a, b, c;
	c = 10 + (12<3) -2;
	printf("%d\n", c);
	return 0;
}

输出结果是 8。

(12<3) 不成立,所以这个逻辑表达式为0,c= 10+0-2 = 8

1
2
3
4
5
6
7
8
#include <stdio.h>
int main(int argc, char *argv[])
{
	int a=12,b=15,c;
	c=(a || (b-=a));
	printf("a=%d b=%d c=%d\n", a, b, c); 
	return 0;
}

或者运算符连接了两个逻辑表达式。由于是或者关系,只要左边的逻辑表达式为 true,程序会偷懒,并不去计算 b-=a。
c = (a && (b-=a)) ,也就是 1 && (b-=a),结果是 c=1。
输出 a=12 b=15 c=1

1
2
3
4
5
6
7
8
#include <stdio.h>
int main(int argc, char *argv[])
{
	int a=12,b=15,c;
	c=(a && (b-=a));
	printf("a=%d b=%d c=%d\n", a, b, c); 
	return 0;
}

并且运算符连接了两个逻辑表达式。由于是并且关系,左边的逻辑表达式成立,程序没法偷懒,必须计算右边的逻辑表达式 b-=a。
输出 a=12 b=3 c=1

抱歉!评论已关闭.