找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 589|回复: 3

[求助] [求助]:程序返回结果

[复制链接]
发表于 2006-8-29 11:27:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(DEFUN c:qq()
  (setq num 220)
  (IF (> NUM 100)
    (PRINC "Very High")
  )
  (IF (AND
        (> NUM 50)
        (<= NUM 100)
      )
    (PRINC "High")
  )
  (IF (AND
        (> NUM 25)
        (<= NUM 50)
      )
    (PRINC "Medium")
  )
  (IF (<= NUM 25))
  (PRINC "Low")

  (PRINC)
)
为何没返回"Very High"?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-8-29 12:34:24 | 显示全部楼层
去掉 最末 (PRINC)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-29 14:49:43 | 显示全部楼层

Re: [求助]:程序返回结果

最初由 haibinpro 发布
[B](DEFUN c:qq()
(setq num 220)
(IF (> NUM 100)
(PRINC "Very High")
)
(IF (AND
(> NUM 50)
(<= NUM 100)
)
(PRINC "High")
)
(IF (AND
(> NUM 25)
(<= NUM 50)
)
(PRINC "Medium")
)
(IF (<= NUM 25))[/COLOR]
(PRINC "Low")

(PRINC)
)
[/B]
括弧位置不对,应改为:
  1. (DEFUN c:qq ()
  2.   (setq num 220)
  3.   (IF (> NUM 100)
  4.     (PRINC "Very High")
  5.   )
  6.   (IF (AND
  7.         (> NUM 50)
  8.         (<= NUM 100)
  9.       )
  10.     (PRINC "High")
  11.   )
  12.   (IF (AND
  13.         (> NUM 25)
  14.         (<= NUM 50)
  15.       )
  16.     (PRINC "Medium")
  17.   )
  18.   (IF (<= NUM 25)
  19.     (PRINC "Low")
  20.   )
  21. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-29 17:22:45 | 显示全部楼层
T 2楼
因为是顺序执行,所以
去掉 最末 (PRINC)不需要。
这里(princ)是为了去除nill的显示。
如下:
命令: (load "F:/SS.LSP") C:SS

命令: ss Highnil

命令:
命令: *取消*

命令: *取消*

命令: (load "F:/SS.LSP") C:SS

命令: ss High

命令:
命令: 指定对角点: *取消*

t 3楼
问题解决,确实如此。
看来程序如果语法有误,其行为难以捉摸啊。
比如,
(DEFUN c:SS ()
  (setq num 100)
  (IF (> NUM 100)
    (PRINC "Very High")
  )
  (IF (AND
        (> NUM 50)
        (<= NUM 100)
      )
    (PRINC "High")
  )
  (IF (AND
        (> NUM 25)
        (<= NUM 50)
      )
    (PRINC "Medium")
  )
  (IF (<= NUM 25)
    (PRINC "Low")
  )
(princ)
)
返回high。
但如果将程序修改为
(DEFUN c:SS ()
  (setq num 40)
  (IF (> NUM 100)
    (PRINC "Very High")
  )
  (IF (AND
        (> NUM 50)
        (<= NUM 100)
      )
    (PRINC "High")
  )
  (IF (AND
        (> NUM 25)
        (<= NUM 50)
      )
    (PRINC "Medium")
  )
  (IF (<= NUM 25))
    (PRINC "Low")
  
(princ)
)

由于)的原因和原先一些残留在内存的东西,结果它就不显示Medium而仍然显示high。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-18 06:34 , Processed in 0.352305 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表