《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和指针》
相关推荐
東隅已逝,桑榆非晚19 小时前
新手入门指南:认识 C 语言文件操作(上)
c语言·开发语言·笔记
社交怪人20 小时前
【A×B】信息学奥赛一本通C语言解法(题号1036)
c语言
Eric 辰东20 小时前
【C 语言程序的编译和链接】详解编译链接过程
c语言·笔记·算法·学习方法
星恒随风20 小时前
C语言数据结构排序算法详解(上):从插入排序、希尔排序到选择排序、堆排序
c语言·数据结构·笔记·学习·排序算法
SoftLipaRZC20 小时前
C语言数据在内存中的存储:整型与浮点型的秘密
c语言·开发语言
社交怪人21 小时前
【2的幂】信息学奥赛一本通C语言解法(题号1037)
c语言
wyjcxyyy21 小时前
java反序列化-cc1链
java·c语言·开发语言
玖玥拾21 小时前
C/C++ 基础笔记(一)
c语言·c++·笔记
逆向命运1 天前
PC企微搜索手机号窗口绕过
c语言·汇编·c++·飞书·企业微信
.千余1 天前
【C++】C++核心语法:函数重载与缺省参数原理与避坑
c语言·开发语言·c++·经验分享·笔记·git·学习