为什么以下代码会让我的机器发出嘟嘟声?
print '\78'
我已在交互式解释器中测试它并在命令行中运行脚本。我也在嵌入式环境中对它进行了测试,并没有在那里发出哔哔声。
答案 0 :(得分:8)
它将\7
解释为八进制转义符,因此它是带有ASCII码7的BEL。这是一个字符,当打印在终端上时,铃声响起。是的,古代的文字钟与电传(甚至是一些终端)。因为我们为不让20世纪60年代的技术浪费而感到自豪,所以每个终端模拟器都具有在看到角色时发出声音的相同能力。为什么它在嵌入式环境中不起作用:嗯,它可能不是你在那里的终端模拟器。
The documentation表示“在标准C中,最多接受三个八进制数字。”由于8
没有有效的八进制数字,因此\7
停止}。
如果您想要文字字符串\78
,请在r
前加上<:p>
print r'\78'
如果您想要角色0x78
(x
),请添加x
:
print '\x78'
但是,如果你问我,除非为它们发明新的转义码,否则应该禁止编程语言的任何八进制细节。 \o123
表示字符串,0o153
表示文字。这两个约定从C转移到无数的编程语言只是因为它不费力地这样做是因为我的拙见被误导和愚蠢。