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
相关产品推荐
相关产品推荐

