c语言
与 或 操作
大部分编程语言都有与操作(&&)跟或操作(||)
与,顾名思义就是两者都的意思,条件A与条件B在编程中表示同时满足条件A和条件B即为真。
或,顾名思义就是两者选其一的意思,条件A或条件B在编程中表示,只要满足条件A和条件B中的一个即为真。
短路
短路是一个不被大家所关注的一个编程语言知识点,其原理是在与或操作中,当前条件既可以判断出结果时不再往后执行。
例如:
int a = 0, b = 0;
(a++) && (b++);
此时b++操作被短路,原因是a++的值是0,0与上任何值都是0,所以后续操作不需要执行既可以得出与操作的值,那么此时c语言程序会对此进行优化,使得b++不被执行。
int a = 1,b = 1;
(a++) || (b++);
此时b++操作依然被短路,原因是a++的值是1,1或上任何值都是1,同理c语言程序会对此优化处理。
短路应用(用于条件控制)
例如:
if (a)//满足条件a 则调用函数do_something
{
do_something();
}
此时可以使用短路原则进行优化
a && do_something();
好处(优势)
- 减少if-else语句,有利于cpu进行分支预测(有关分支预测见https://www.jianshu.com/p/d7f2172bd383)
- 语句简洁
坏处(劣势)
- 用于出bug
- 不易于理解
总结
短语原则的应用一般只应用于很简单的分支语句中,切勿乱用。