基础理解
表达式1?表达式2:表达式3;
- 三目运算符属于条件运算符,可与 if 判断函数类比。
- 其运算规则是:先计算表达式1中内容,如果表达式1中内容为真,则计算表达式2中内容并返回;若表达式1中内容为假,则计算表达式3中内容并返回。
- 最简单的三目运算符如:
#include<stdio.h>
int main(){
int a,b,c;
a=7;
b=6;
c=(a>b)?a:b;
return 0;
}
等价于 if 判断函数:
#include<stdio.h>
int main(){
int a,b,c;
a=7;
b=6;
if (a>b) c=a;
else c=b;
return 0;
}
提高三目运算符复杂度
思考如何运用三目运算符返回三个输入中的最大值。 测试题目见:https://edu.csdn.net/skill/practice/c-1d3d9e97b98b4151b87c4433d987af83/327?typeId=18462&language=c
方案1
#include <stdio.h>
int main()
{
int a, b, c, max;
printf("请输入3个整数:");
scanf("%d,%d,%d", &a, &b, &c);
max = a > b ? (a > c ? a : c) : (b > c ? b : c);
printf("3个整数中的最大的是:%d", max);
return 0;
}
提取出关键判断语句:
max = a > b ? (a > c ? a : c) : (b > c ? b : c);
含义解释:
难理解的三目运算符
还是思考如何运用三目运算符返回三个输入中的最大值。
方案2
#include <stdio.h>
int main()
{
int a, b, c, max;
printf("请输入3个整数:");
scanf("%d,%d,%d", &a, &b, &c);
max = (c > ((a > b) ? a : b)) ? c : ((a > b) ? a : b);
printf("3个整数中的最大的是:%d", max);
return 0;
}
提取出关键判断语句:
max = (c > ((a > b) ? a : b)) ? c : ((a > b) ? a : b);
含义解释:
|