91download.com supports a wide range of platforms, including YouTube, Facebook, Twitter, TikTok, Instagram, Dailymotion, Reddit, Bilibili, Douyin, Xiaohongshu and Zhihu, etc. Click the download button below to parse and download the current video
在编程的世界里,逻辑表达式是构建智能决策的基石。但你是否好奇过,计算机是如何评估这些看似复杂的逻辑表达式的呢?让我们一起揭开这个神秘的面纱。
想象一下,我们正在编写一个程序,用来检查一首特定的歌曲是否符合特定播放列表的筛选条件。这个逻辑表达式可能会问:这首歌的每分钟节拍数(BPM)是否同时大于等于150且小于等于180?在逻辑运算的世界里,这样的“与”运算符通常位于运算顺序的最后。
计算机首先单独评估表达式的两边。假设变量BPM的值是200。由于“大于等于”和“小于等于”的比较运算符具有相同的优先级,计算机从左到右进行评估。首先,我们将200代入左侧,然后简化。
200大于等于150,因此这部分评估为真。然后,我们跳到右侧。200不小于等于180,因此这部分评估为假。现在,我们已经将两边简化为布尔值,接下来评估“与”运算符。只有当两边都为真时,“与”表达式的结果才为真。
现在,让我们尝试一个包含多个逻辑运算符的表达式。这个表达式询问:歌曲的类型是否为“lo-fi”的任何拼写形式?假设变量genre包含字符串“lo-fi”。我们首先评估逻辑运算符周围的表达式,然后应用“或”运算。
从最左边的表达式开始,这些字符串不相等,因此评估为假。跳到第二个表达式,这些字符串相等,因此评估为真。第三部分,这些字符串不相等,因此评估为假。现在,我们已经简化完毕,接下来看“或”运算符。
“或”运算符的表达式,只要至少有一边为真,整个表达式的结果就为真。因此,假或真评估为真,然后真或假也评估为真。你可能会想:“我甚至需要评估最后一部分吗?”一旦第二个表达式评估为真,我们就知道最终答案将是真。
实际上,计算机在评估时也会进行这样的优化,我们称之为“短路评估”或“懒惰评估”。在它的“懒惰”中,一旦确定了最终答案,计算机就会停止评估。对于“或”运算符,一旦找到一边评估为真,计算机就会停止评估,因为无论另一边是什么,表达式的结果都将始终为真。
而对于“与”运算符,情况则相反。一旦找到一边评估为假,计算机就会停止,因为无论另一边是什么,整个表达式的结果都将为假。
这种模式可以应用在我们的程序中,利用短路评估来检查预条件,从而避免可能的错误。例如,如果变量group size的值为零,直接进行除法运算将导致运行时错误。为了解决这个问题,我们可以先检查group size是否等于零。如果group size为零,左侧将评估为假,计算机将短路,从而避免右侧的除法运算。
最后,我们来看看“非”运算符。它具有高于“与”和“或”运算符的优先级。例如,一个表达式实际上是在问:类型不等于摇滚且BPM大于130吗?我们应当谨慎使用“非”运算符,因为它可能会使代码变得难以理解。
如果你需要否定一个复合布尔表达式,将其分解成多个部分通常更容易理解。否则,“非”运算符可能会使你的程序变得不那么易读,就像说“我不喜欢蓝色”或“我不会在这个视频中说不”一样。
通过理解逻辑表达式的评估方式,我们可以更好地编写出高效且可靠的代码。现在,你对计算机如何评估逻辑表达式有了更深的了解,下次编写代码时,不妨尝试运用这些知识,让你的程序更加智能。
Share on Twitter Share on Facebook