【编程技巧】巧用短路运算简化代码

编程入门 行业动态 更新时间:2024-10-26 01:15:40

【编程技巧】<a href=https://www.elefans.com/category/jswz/34/1767453.html style=巧用短路运算简化代码"/>

【编程技巧】巧用短路运算简化代码

文章目录

    • 1. 短路运算
      • 1.1 短路运算的符号
      • 1.2 运算规则
      • 1.3 示例 (C/C++)
        • 1.3.1 逻辑与的短路运算
        • 1.3.2 逻辑或的短路运算
    • 2. 特殊应用
      • 2.1 JavaScript中的短路运算
      • 2.2 Python中的短路运算
    • 3. 参考资料

1. 短路运算

短路运算就是在从左到右的逻辑运算中,前者满足要求,就不再执行后面的表达式。在编程中合理利用短路运算,可以简化我们的代码。

1.1 短路运算的符号

  • 逻辑与
  • 逻辑或

编程语言中的逻辑运算符大多是:&&||! (如C/C++、Java、JS、C#),少部分是 andornot (如 Python、PHP、Lua)

1.2 运算规则

  • 逻辑或:前一个表达式的条件为真就会发生短路运算,不再执行后面的表达式。
  • 逻辑与: 前一个表达式的结果为假就会发生短路运算,不再执行后面的表达式。

1.3 示例 (C/C++)

1.3.1 逻辑与的短路运算

判断一个数和0的关系,通常会这样写:

int a = 1;if (a > 0)printf("大于0");
else if (a < 0)printf("小于0");
elseprintf("等于0");

使用三目运算符改写:

int a = 1;a>0? printf("大于0"): a<0? printf("小于0"): printf("等于0"); 

使用短路运算改写:

int a = 1;(a > 0) && printf("大于0");
(a < 0) && printf("小于0");
(a == 0) && printf("等于0");
1.3.2 逻辑或的短路运算

编写一个函数,把数字 a 的最小值限定为 10:

int clamp(int a)
{if (a < 10)return 10;elsereturn a;
}

使用三目运算符改写:

int clamp(int a)
{return a < 10? 10: a;
}

使用短路运算改写:

int clamp(int a)
{(a >= 10) || (a = 10);// 或// (a < 10) && (a = 10);return a; 
}

2. 特殊应用

2.1 JavaScript中的短路运算

JavaScript 中的 逻辑值 比较灵活,除了 Boolean对象,其他类型也可以是 逻辑值

类型truefalse
Booleantruefasle
Number0, NaN0, NaN
String空串非空字符串
Object非 undefined,null 对象undefined, null

注意:空数组[]和空对象{}的逻辑值是true ;

利用这种特性,经常利用短路运算判断一个对象是否为undefined,如果是就新建一个对象,例如:

function get_book_name(book)
{return book.name || new Book("none").name;
}

上面的代码等效于:

function get_book_name(book)
{if (typeof(book) == "undefined")book = new Book("none");return book.name;
}

2.2 Python中的短路运算

Python 中的逻辑值非常灵活,除了bool对象,其他类型也可以作为 逻辑值

类型truefalse
bool对象TrueFasle
数字0 数字0
容器非空容器空容器
字符串空串非空字符串
对象None对象None

利用这种特性,我们可以利用短路运算判断一个数组是否为空:

lis = []lis or print("数组为空")

上面的代码等效于:

lis = []if len(lis) == 0:print("数组为空")

3. 参考资料

  • C语言逻辑运算短路(与运算、或运算)_好儿郎-志在四方的博客-CSDN博客_c语言逻辑短路
  • 短路运算(逻辑运算是短路运算中最常见的一种) - 灬安 - 博客园
  • JavaScript逻辑运算符“&&”和“||”短路原则的应用_瑝琦的博客-CSDN博客
  • 【Python】true和false_云朵先生_的博客-CSDN博客

更多推荐

【编程技巧】巧用短路运算简化代码

本文发布于:2024-03-23 21:43:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743175.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:巧用   代码   编程技巧

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!