You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Emacs Lisp教程疑问:两数相加时出现额外输出

关于Emacs Lisp求值后额外输出的解释

嘿,刚上手Emacs Lisp的时候碰到这个确实容易懵!你看到的那些额外内容,其实是Emacs默认帮你展示的同一个数值的多种表示形式,咱们拆开来一个个说:

  • #o531:这是数值的八进制表示,在Elisp里#o是八进制数的专属前缀。算一下的话:5*8² + 3*8 + 1 = 345,和你得到的十进制结果完全一致。
  • #x159:这个是十六进制表示,#x是十六进制的前缀。换算成十进制就是1*16² + 5*16 + 9 = 345,没错吧。
  • ?r(或者第二个例子里的?\C-e):这是数值对应的ASCII/控制字符。Elisp里用?开头表示单个字符,比如?\C-e就是Ctrl+e这个控制字符,它的ASCII码正好是5;而345对应的是扩展ASCII里的字符r(不同环境可能有差异,但核心是把数值映射成对应的字符)。

如果只想看十进制结果,不想显示这些额外格式,可以修改Emacs的eval-expression-print-format变量。在*scratch*缓冲区里执行这段代码,之后再用C-x C-e求值就只会输出十进制了:

(setq eval-expression-print-format '(t))

内容的提问来源于stack exchange,提问作者Alexander Engelhardt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:53:25