条件表达式简介
条件表达式是C语言中一种简洁的条件判断方式,它可以达到if...else语句的效果,但写法更加简洁。
条件运算符是C语言中唯一的三目运算符,由"?"和":"组成,需要三个运算对象。
一般形式:
表达式1 ? 表达式2 : 表达式3
执行过程:首先计算表达式1的值,如果为真(非0),则整个条件表达式的值等于表达式2的值;如果为假(0),则整个条件表达式的值等于表达式3的值。
条件表达式语法与示例
条件表达式的基本语法:
条件 ? 表达式1 : 表达式2;
示例:使用条件表达式求两个数中的较大值
#include <stdio.h>
int main() {
int x = 10, y = 20;
int max = (x > y) ? x : y;
printf("较大值是: %d", max);
return 0;
}
上面的代码中,如果x大于y,则max的值为x,否则为y。
条件表达式的优先级与结合性
优先级:
条件运算符的优先级高于赋值运算符,但低于关系运算符和算术运算符。
例如:
x > y ? x : y - 1
等价于:
(x > y) ? x : (y - 1)
结合性:
条件运算符具有右结合性,即从右向左计算。
示例:
a == b ? (c = 0) : a > b ? (c = 2) : (c = -2)
等价于:
a == b ? (c = 0) : (a > b ? (c = 2) : (c = -2))
编程实例:字母大小写转换
下面是一个使用条件表达式的实际例子:输入一个字母,判断是否为大写英文字母,如果是,则转换为小写字母。
#include <stdio.h>
int main() {
char ch;
printf("输入一个字母字符:");
scanf("%c", &ch);
ch = (ch >= 'A' && ch <= 'Z') ? ch + 32 : ch;
printf("%c\n", ch);
return 0;
}
运行结果示例:
输入一个字母字符:F
f
输入一个字母字符:f
f
解析:程序通过条件表达式判断字符是否在大写字母A-Z范围内,如果是,则通过ch+32将其转换为小写字母(ASCII码中,大写字母和小写字母相差32)。
练习题
练习题1
以下代码段的输出是什么?
int a = 5, b = 10;
int c = (a > b) ? a : b;
printf("%d", c);
答案:10
解析:条件表达式(a > b) ? a : b首先判断a是否大于b,因为5>10为假,所以整个表达式的值为b的值,即10。
练习题2
以下代码段的输出是什么?
int x = 15, y = 10, z = 5;
int result = (x > y) ? ((x > z) ? x : z) : ((y > z) ? y : z);
printf("%d", result);
答案:15
解析:这是一个嵌套的条件表达式。首先判断x>y(15>10为真),然后判断x>z(15>5为真),所以最终结果为x的值15。
练习题3
编写一个条件表达式,实现以下功能:如果变量score大于等于60,则将result设为'P'(Pass),否则设为'F'(Fail)。
答案:
char result = (score >= 60) ? 'P' : 'F';
解析:条件表达式首先判断score是否大于等于60,如果为真,则结果为'P',否则为'F'。