c语言if条件里面不能连续判断后没有分号,为什么会出错?

?(条件操作符)条件操作符接受三个操作数,它也会控制子表达式的求值顺序。下面是它的用法: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++;在这个例子中,逗号操作符把两条赋值语句整合成一条语句,从而避免了在它们的两端加上花括号。不过,这并不是个好做法,因为逗号和分号的区别过于细微。}

我要回帖

更多关于 c语言if条件里面不能连续判断 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信