在C语言中有以下关系运算符:
1) < 小于
2) <= 小于或等于
3) > 大于
4) >= 大于或等于
5) == 等于
6) != 不等于
C语言中提供了三种逻辑运算符:
1) && 与运算
2) || 或运算
3) ! 非运算
按照运算符的优先顺序可以得出:
a>b && c>d 等价于 (a>b)&&(c>d)
!b==c||d<a 等价于 ((!b)==c)||(d<a)
a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b)
例如条件语句:
if(a>b) max=a;
else max=b;
可用条件表达式写为
max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。
1) 条件运算符的结合方向是自右至左。
例如:
a>b?a:c>d?c:d
应理解为
a>b?a:(c>d?c:d)
这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。
【例4.11】输入三个整数,输出最大数和最小数。
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a,b,c,max,min,med;
printf("input three numbers: \n");
scanf("%d%d%d",&a,&b,&c);
//max = (((a>b)?a:b)>c)?((a>b)?a:b):c;
//min = (((a<b)?a:b)<c)?((a<b)?a:b):c;
max=(max=a>b?a:b)>c?max:c;
min=(min=a<b?a:b)<c?min:c;
med = (a<max&&a>min)?a:((b<max&&b>min)?b:c);
printf("最大=%d 最小=%d 中间=%d \n",max,min,med);
}
比较4个数字的大小
#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int a,b,c,d,max,min,mid,mid2; printf("输入 4个 数字: \n"); scanf("%d%d%d%d",&a,&b,&c,&d); //max=((a>b?a:b)>c?(a>b?a:b):c)>d?((a>b?a:b)>c?(a>b?a:b):c):d; //min=((a<b?a:b)<c?(a<b?a:b):c)<d?((a<b?a:b)<c?(a<b?a:b):c):d; //max=(max=(a>b?a:b)>c?(a>b?a:b):c)>d?max:d; //缩写 //min=(min=(a<b?a:b)<c?(a<b?a:b):c)<d?min:d; mid =(a>b?a:b); mid2=(a<b?a:b); max=(max=mid>c?mid:c)>d?max:d; //4个数比大小。。。。5个数比大小清晰点。 min=(min=mid2<c?mid2:c)<d?min:d; printf("最大=%d 最小=%d \n",max,min ); }