本文共 1009 字,大约阅读时间需要 3 分钟。
实验目的: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)的值并编程验证。转载地址:http://rbdti.baihongyu.com/