1.三元运算符基础使用
三元运算符(也称条件运算符 ),是C语言中唯一的三目运算符,用一行代码就能完成简单的条件判断+赋值,适合场景简单、逻辑单一的二选一需求,让代码更简介,本质是if...else的"简化写法"。
核心语法:
条件表达式?表达式1:表达式2;
注意:
- 三元运算符是运算符,不是语句
- 表达式1和2的类型必须一致(比如都是int、或者都是float)

示例:判断成绩是否合格
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int score;
printf("请输入成绩(0-100):");
scanf("%d", &score);
char* result = (score >= 60) ? "及格" : "不及格";
//char* result = (score >= 90) ? "优秀" : (score >= 80) ? "良好" : (score >= 60) ? "及格" : "不及格";
printf("成绩:%d,结果:%s\\n", score, result);
return 0;
}
//结果:
请输入成绩(0-100):78
成绩:78,结果:及格
2.最容易犯的 3 个错误
错误 1:表达式类型不一致
// 错误写法:表达式1是int,表达式2是char*,类型不匹配
int num = (a>5) ? 10 : "小于5";
解决:确保表达式 1 和 表达式 2 类型完全一致(比如都是 int、都是字符串)。
错误 2:遗漏括号导致优先级错误
int res = a > b ? a + 10 : b + 20;
解决:给条件表达式加括号,提升可读性 + 避免优先级问题:
int res = (a > b) ? (a + 10) : (b + 20);
错误 3:用三元运算符执行多行代码
(a>5) ? printf("大\\n"); a++ : printf("小\\n"); b++;
解决 :需要执行多行代码时,改用 if...else,不要强行用三元运算符。
3. 综合实战:三元运算符 + switch 结合使用
#include <stdio.h>
int main() {
int num;
printf("请输入1-4的数字:");
scanf("%d", &num);
// 三元运算符先判断输入是否合法
int is_valid = (num >= 1 && num <= 4) ? 1 : 0;
if (is_valid) {
switch (num) {
case 1: printf("你选了1:早餐\\n"); break;
case 2: printf("你选了2:午餐\\n"); break;
case 3: printf("你选了3:晚餐\\n"); break;
case 4: printf("你选了4:夜宵\\n"); break;
}
} else {
printf("输入错误!\\n");
}
return 0;
}