C语言例3-18:使用关系表达式的例子

时间:2024-03-18 15:15:38

关系表达式的一般形式:

        表达式  关系运算符 表达式    

最初代码如下:

#include<stdio.h>
int main(void)
{
	int i=3,j=4,k=5;
	float f1=1.0, f2=2.1;
	char c1='a', c2='d';                      //'a'(97)     'd'(100)
	
	printf("i>j  的结果为:  %d\n",i>j);        //0
	printf("f1<f2  的结果为:  %d\n",f1<f2);    //1 
	printf("c1==c2  的结果为:  %d\n",c1==c2);  //0
	printf("\n");
	printf("c1>=i  的结果为:  %d\n",c1>=i);    //1
	printf("c2<=f1  的结果为:  %d\n",c2<=f1);  //0
	printf("c1!=k  的结果为:  %d\n",c1!=k);    //1
	printf("\n");
	printf("i<j<k  的结果为:  %d\n",i<j<k);    //1<k  1
	printf("i>j!=k  的结果为:  %d\n",i>j!=k);  //0!=k   1
	printf("i==j!=k>j>=i  的结果为:  %d\n",i==j!=k>j>=i);   
		//(i==j)!=((k>j)>=i)  -->  0!=(1>=i)  -->0!=0   -->0
	printf("i<j<=k!=i==i  的结果为:  %d\n",i<j<=k!=i==i);   
		//(((i<j)<=k)!=i)==i   -->((1<=k)!=i)==i -->  (0!=i)==i  -->  1==i  --> 0
	
	return 0;
}

结果如下:

警告处理:

1. 初始化浮点类型变量警告

        浮点数是按照double型运算,在运算过程中会自动转换成double

        后缀f或者F

        更改代码为:

float f1=1.0f, f2=2.1f;

2. 不能使用连续比较,bool数据类型不安全

①i<j<k 更改为

i<j&&j<k

②i==j!=k>j>=i   更改为

i==j!=k>j&&j>=i

③i<j<=k!=i==i   更改为

i<j&&j<=k!=i==i

优化后代码:

#include<stdio.h>
int main(void)
{
	int i=3,j=4,k=5;
	float f1=1.0f, f2=2.1f;
	char c1='a', c2='d';                      //'a'(97)     'd'(100)
	
	printf("i>j  的结果为:  %d\n",i>j);        //0
	printf("f1<f2  的结果为:  %d\n",f1<f2);    //1 
	printf("c1==c2  的结果为:  %d\n",c1==c2);  //0
	printf("\n");
	printf("c1>=i  的结果为:  %d\n",c1>=i);    //1
	printf("c2<=f1  的结果为:  %d\n",c2<=f1);  //0
	printf("c1!=k  的结果为:  %d\n",c1!=k);    //1
	printf("\n");
	printf("i<j<k  的结果为:  %d\n",i<j&&j<k);    //1<k  1
	printf("i>j!=k  的结果为:  %d\n",i>j!=k);  //0!=k   1
	printf("i==j!=k>j>=i  的结果为:  %d\n",i==j!=k>j&&j>=i);   
		//(i==j)!=((k>j)>=i)  -->  0!=(1>=i)  -->0!=0   -->0
	printf("i<j<=k!=i==i  的结果为:  %d\n",i<j&&j<=k!=i==i);   
		//(((i<j)<=k)!=i)==i   -->((1<=k)!=i)==i -->  (0!=i)==i  -->  1==i  --> 0
	
	return 0;
}