条件运算符和条件表达式
C 语言中还有一个特殊的三目条件运算符“?:”。由这个运算符构成的表达式为条件表达式。条件表达式的格式为:
e?e1:e2
其中,e、e1、e2 代表表达式。
条件表达式的求值法则是:首先求解 e 的值,若 e 值为真(非 0),则取 e1 的值作为
条件表达式的值;若 e 值为假(0),则取 e2 的值作为条件表达式的值。
例如,代数函数
1 ( x≥0 )
y =
-1 ( x<0 )
可用赋值表达式描述如下:
y=(x>=0)?1:-1
上式中赋值号右边的是条件表达式。
又例如,若 a、b 的初值分别为 2 和 5,则条件表达式
a>b?a++:++b;
的值为++b,即先自加,后引用,值为 6,而表达式 a++不被求解,故执行后 a 不变,仍为
2,而 b 变为 6。
有a=1,b=2这时我们要求是取ab两数中的较小的值放入min变量中,也许你会这样写:
if (a<b)
min = a;
else
min = b; //这一段的意思是当a<b时min的值为a的值,否则为b的值。
用条件运算符去构成条件表达式就变得简单明了了:
min = (a<b)?a : b
很明显它的结果和含意都和上面的一段程序是一样的,但是代码却比上一段程序少很多,编译的效率也相对要高,但有着和复合赋值表达式一样的缺点就是可读性相对效差。在实际应用时根据自己要习惯使用,就我自己来说我喜欢使用较为好读的方式和加上适当的注解,这样可以有助于程序的调试和编写,也便于日后的修改读写。
cz81_503897891 2010-10-26 10:32