结合短路法和逗号表达式,代替if和三目运算符

来源:本站
导读:目前正在解读《结合短路法和逗号表达式,代替if和三目运算符》的相关信息,《结合短路法和逗号表达式,代替if和三目运算符》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《结合短路法和逗号表达式,代替if和三目运算符》的详细说明。
简介:C/C++系列语言中,if-else语句是最主要的条件分支语句,本文主要谈了结合短路法和逗号表达式,代替if和三目运算符。

C/C++系列语言中,if-else语句是最主要的条件分支语句:

if(A) B;

else C;

其功能就是如果A成立,则执行B,否则执行C。类似的还是三目运算符:

A?B:C;

其功能与if语句类似,并且由于是表达式,它也有返回值,返回的就是被实际执行的语句的返回值。但如果既不使用if语句又不使用三目运算法,有没有办法也进行条件分支呢?答案是肯定的,方式就是使用“短路法”。

C/C++系列语言的逻辑运算法&&和||有一个副作用,就是有短路效果。对于与运算法&&来说,只有被它连接的两个表达式都成立时才返回值,那么如果左边的表达式结果为假,那么无论右边的表达式结果如何,结果都为假,此时就不会再执行右边的表达式了。或运算符||与之类似,只要有一个表达式为真结果就为真,那么当它左边的表达式为真时,右边的就不会被执行了。利用这种特性,即可以写出取代if语句和三目运算法的代码:

A && (B, 1) || C;

这段代码使用与、或运算符以及逗号把三个语句A、B、C以及常数1连接起来,其功能与if语句是非常类似的。具体来说,当表达式A返回真值时,由于A与B之间是与运算符,仍需要再判断B的值,所以起来了“如果A成立则执行B”的作用,但若B的返回值为假,就会进一步判断C的值,这与开始的要求不符,因此把B改造为逗号表达式,让它总是返回“1”,这样一来就不会执行C了。如果A不成立,那么B已无需执行,只要再判断C的值即可,这就实现了“若A不成立则执行C”的要求。

当然这种写法也有一些限制,B和C的部分不适合写太长,并且必须有返回值,否则编译器会报编译时错误。

这个技巧有什么用?我也不知道,可能唯一的用处就是能让程序短一点点,难懂一点点,实际编程中应该不会使用到,但对于理解短路法编程的作用、逗号表达式的作用还是有帮助的。

提醒:《结合短路法和逗号表达式,代替if和三目运算符》最后刷新时间 2024-03-14 00:58:06,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《结合短路法和逗号表达式,代替if和三目运算符》该内容的真实性请自行鉴别。