和运营商Lisp

Aru*_*x Z 1 lisp common-lisp

为什么and运算符返回值?返回的值取决于什么?

当我尝试以下示例时 -

(write (and a b c d)) ; prints the greatest integer among a b c d
Run Code Online (Sandbox Code Playgroud)

其中a,b,cd是正整数,然后and返回他们最大的.

然而,当之一a,b,cd为0或负值,则最小整数被返回.为什么会这样?

Ósc*_*pez 7

文档中所述:

宏从左到右一次and评估每个表单.只要任何表单评估nil,and返回时nil不会评估剩余的表单.如果所有表单都是最后一个评估true值,则返回通过评估最后一个表单生成的结果.如果没有提供表格,则(and)退货t.

因此返回的值不依赖于哪个值是参数的"最大"或"最小".