《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和指针》
相关推荐
hefaxiang4 小时前
C语言常见概念(下)
c语言·开发语言
potato_may4 小时前
链式二叉树 —— 用指针构建的树形世界
c语言·数据结构·算法·链表·二叉树
Bona Sun5 小时前
单片机手搓掌上游戏机(二十)—pico运行doom之编译环境
c语言·c++·单片机·游戏机
我真不会起名字啊6 小时前
C、C++中的sprintf和stringstream的使用
java·c语言·c++
剪一朵云爱着8 小时前
PAT 1164 Good in C
c语言·开发语言
Molesidy9 小时前
【C】简易的环形缓冲区代码示例
c语言·开发语言
阿白的白日梦10 小时前
Windows下c/c++编译器MinGW-w64下载和安装
c语言·后端
水饺编程12 小时前
第3章,[标签 Win32] :WM_CREATE 消息的产生
c语言·c++·windows·visual studio
会员果汁12 小时前
双向链式队列-C语言
c语言·数据结构
C语言不精12 小时前
c语言-优雅的多级菜单设计与实现
c语言·开发语言·算法