实验4-2 逻辑表达式

来源:互联网 发布:阿里云最便宜的主机 编辑:程序博客网 时间:2024/06/07 05:58
 实验目的:

1.理解逻辑操作符的特点(优先级、序列点、操作数)。

2.学会用逻辑表达式正确地表示数学上的一些结论。

3.掌握逻辑表达式的求值。

实验步骤:

1. 求出表中表达式的值并编程验证。

 

2&&3

! 'a'+2.3

! '0' * 2.3

! '\0' * 2.3

'\1' * 2.3

'\1' - 1

 

 

 

 

 

 

类型

 

 

 

 

 

 

讨论:

有人认为C语言表达式虽然只有一个值,但它却属于两种类型。你觉得呢?

2.分析程序或编程。

2.1分析下面程序的作用

#include<stdio.h>

int main()

{

       int i;

       scanf("%d", &i);

       printf("%d\n", i == 0);

       printf("%d\n", i != 0);  

}

2.2如果用户输入的整数不小于0,则程序输出1,0;否则输出0,1。

2.3如果用户输入的是三位的正整数,则程序输出1,0;否则输出0,1。

2.4用户输入两个小数,如果它们的差小于1e-5(如输入3.1415926 3.141592或输入3.141592 3.1415926),则程序输出1,0;否则输出0,1。

2.5用户输入一个三角形的三边长,如果它们可以构成一个直角三角形(如输入3 4 5或3 5 4或5 3 4),则程序输出1,0;否则输出0,1。

2.6改动上面的程序,如果条件成立就输出1,否则输出0。

3.设有int a, i=0。

3.1对表达式'\0' && ++i求值时,如果发生了短路运算,则子表达式++i   (会/不会)求值,原表达式求值后变量i的值为   。如果没有发生短路运算,则子表达式++i   (会/不会)求值,原表达式求值后变量i的值为    。编程验证表达式'\0' && ++i求值时是否发生了短路运算。

3.2分析表达式'0' && ++i与表达式'0' && i++的异同,并编程验证。

3.3对于表达式a=2 || i++,有同学认为求值时应先序列点,求值顺序为((a=2) || (i++)),此表达式为逻辑表达式;同学认为求值时要考虑序列点也要考虑优先级,求值顺序为(a=( (2) || (i++))),此表达式为赋值表达式。你觉得原表达式中&&左边的操作数是2还是a=2,请编程验证。

3.4求表达式'\0' || (a=0) && ++i和表达式'\0'&& i++ ||(a=0)的值并编程验证。