条件操作符和逗号操作符

文章介绍了条件操作符在控制表达式求值顺序时的应用,以及与传统if语句的对比。同时,强调了逗号操作符在简化代码和提高维护性方面的技巧,尽管有时可能需要谨慎使用以避免混淆。
摘要由CSDN通过智能技术生成

?(条件操作符)

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

expression1?expression2 :expression3

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

首先计算的是expression1的值,如果它的值为真(非零值),那么整个表达式的值就是expression2的值,expression3不会进行求值,但是,如果expression1的值是假(零值),那么整个表达式的值就是expression3的值,expression2不会进行求值。

什么时候该用到条件操作符呢,这里有两个程序片段:

if(a>5)

   b=3;

else

  b= -20;

---->

b=a>5?3 :-20;

这两段代码实现的功能完全相同,但左边的代码要两次书写b=,当然,这并没有什么大不了的,在这种场合使用条件操作符并无优势可言,但是,请看下面这条语句:

if(a>5)

    b[2*c+d(e/5)] = 3;

else

  b[2*c+d(e/5)] = -20;

---->

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

这个例子里使用条件操作符的好处就显而易见。

=====分割线=========






,(逗号操作符)

,操作符在有些场合相当有用,它的用法如下:

expression1,expression2,expression3,...,expressionN

逗号操作符将两个或者多个表达式分隔开来,这些表达式自左向右逐个进行求值,整个逗号表达式的值就是最后那个表达式的值。例如:

if(b+1,c/2,d>0)

如果d的值大于0,那么整个表达式的值就为真。当然,没有人会编写这样的代码,前两个表达式的求值毫无意义,它们的值只是简单地丢弃。但是,请看下面的代码:

a = get_value();

count_value(a);

while(a>0)

{

....

a = get_value();

count_value(a);

}

可以用逗号表达式,将代码改写成如下:

while(a=get_value(), count_value(a), a>0)

{

......

}

或者

while(count_value(a=get_value()), a>0)

{

.......

}

现在,循环中用于获得下一个值的语句只需要出现一次,逗号操作符使源程序更易于维护。

这里有一个技巧:

while(x<10)

    b+=x,

     x++;

在这个例子中,逗号操作符把两条赋值语句整合成一条语句,从而避免了在它们的两端加上花括号。不过,这并不是个好做法,因为逗号和分号的区别过于细微。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值