关系表达式的一般形式:
表达式 关系运算符 表达式
最初代码如下:
#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;
}