《C和指针》笔记19: 条件操作符

条件操作符接受三个操作数。它也会控制子表达式的求值顺序。下面是它的用法:

c 复制代码
expression1 ? expression2 : expression3

条件操作符的优先级非常低,所以它的各个操作数即使不加括号,一般也不会有问题。但是,为了清楚起见,人们还是倾向于在它的各个子表达式两端加上括号。

给个例子说明它的用法:

c 复制代码
b = a > 5 ? 3 : 20;

可以读作"a是不是大于5?如果是,就执行b-6,否则执行c/2",它等价于下面的语句

c 复制代码
if (a > 5)
	b = 3;
else
	b = 20;

这好像看不出什么优点,但是如果是下面的语句

c 复制代码
if(a > 5 )
	b[ 2 * c + d( e / 5 ) ] = 3;
else
	b[ 2 * c + d( e / 5 ) ] = -20;

数组的下标要写两次,显得很繁琐,写成下面的语句反而简洁,而且不容易出错:

c 复制代码
b[ 2 * c + d( e / 5 ) ] = a > 5 ? 3 : -20;

参考

  1. 《C和指针》
相关推荐
松涛和鸣42 分钟前
DAY52 7-Segment Display/GPIO/Buttons/Interrupts/Timers/PWM
c语言·数据库·单片机·sqlite·html
Echo缘1 小时前
关于在.cpp文件中包含c的头文件,编译报错问题
c语言·开发语言
我是海飞1 小时前
杰理 AC792N WebSocket 客户端例程使用测试教程
c语言·python·单片机·websocket·网络协议·嵌入式·杰理
项目題供诗2 小时前
C语言基础(三)
c语言·c++
码农水水2 小时前
中国电网Java面试被问:流批一体架构的实现和状态管理
java·c语言·开发语言·面试·职场和发展·架构·kafka
宵时待雨3 小时前
数据结构(初阶)笔记归纳2:顺序表的实现
c语言·数据结构·笔记·算法
小鱼23333 小时前
STM32中的中断机制与应用
c语言·stm32·单片机·嵌入式硬件·mcu
阿华hhh4 小时前
单片机day1
c语言·单片机·嵌入式硬件
我还可以再学点4 小时前
C语言常见函数
c语言·开发语言
黎雁·泠崖4 小时前
吃透Java操作符高阶:位操作符+赋值操作符 全解析(Java&C区别+实战技巧+面试考点)
java·c语言·面试