小编Jel*_*alF的帖子

SICP练习1.5

练习1.5. Ben Bitdiddle发明了一项测试,以确定他所面临的口译员是使用申请顺序评估还是正常顺序评估.他定义了以下两个程序:

(定义(p)(p))

(define(test xy)(if(= x 0)0 y))

然后他评估表达式

(测试0(p))

Ben使用应用程序订单评估的解释器会观察到什么行为?对于使用正态评估的翻译,他会观察到什么行为?

我理解这个练习的答案; 我的问题在于如何解释(p)与p的关系.例如,(test 0(p))导致解释器挂起(这是预期的),但是(测试0 p)上面的定义立即求值为0.为什么?

而且,假设我们将定义更改为(define(p)p).根据给定的定义,(测试0(p))和(测试0 p)都评估为0.为什么会出现这种情况?为什么翻译不挂?我正在使用Dret博士和SICP​​包.

scheme sicp

7
推荐指数
1
解决办法
1876
查看次数

C中布尔表达式的结果

为什么以下表达式求值为0?

i > --i
Run Code Online (Sandbox Code Playgroud)

假设i = 5.从左到右评估表达式,我们评估左操作数(i)得到5并且我们评估右操作数(--i)得到4.所以表达式约应该计算为1.但是当我用gcc编译并运行它,它总是计算为0.我的思维过程中是否存在缺陷?

c boolean-expression pre-increment

1
推荐指数
1
解决办法
202
查看次数

标签 统计

boolean-expression ×1

c ×1

pre-increment ×1

scheme ×1

sicp ×1