【问题标题】:Strange error: stray ‘\226’ in this program [duplicate]奇怪的错误:这个程序中出现了“\ 226”[重复]
【发布时间】:2015-11-06 08:05:58
【问题描述】:
theRunners[i] |= (1ULL << (((runnerList)atoll(token)) – 1ULL));

为什么该行会出现以下奇怪的错误?

错误:程序中出现杂散“\226”

怎么了?

【问题讨论】:

  • 在一些扩展的 ASCII 字符集中,这是一个“n dash”——你可能输入了这个而不是普通的连字符(或者你的文本编辑器自动输入了)。如果您仔细观察,您实际上可以看到它不是正常的连字符。
  • 具有该属性的一个值得注意的扩展 ASCII 字符是 Windows 代码页 1252,这是大量 Windows 安装使用的默认代码页。
  • 有时我在某些文本编辑器中意外按下控制键(如 CTRL、ALT...)和常规键(如“空格”)时也会出现这种情况。它“翻译”成这样的字符。
  • 只有一个流浪者('\226')吗?不是三个,比如 \226、\136 和 \146?

标签: c++ compiler-errors


【解决方案1】:

在您粘贴的文本中: 符号实际上是字符 0x96,在 Windows-1252 代码页中是一种连字符。

您必须改用 ASCII 减号;尝试删除那段代码并重新输入。

确保您使用的是纯文本编辑器 - 一些文字处理器会自动将标点符号更改为“时髦”的替代版本。

【讨论】:

  • @KemyLand 将他的行复制粘贴到一个文本文件中向我显示了 0x96 ,实际上它是连字符 .. 再试一次。也许你的浏览器或任何正在做一些翻译的东西。
  • @KemyLand 然后您使用不同的编码进行检查。尝试转换为 Windows 代码页 1252,您会发现它确实是 0x96。请注意,它不是 latin1:latin1 指的是ISO-8859-1,它没有定义0x96。
  • @hvd:我使用的是 ZSH,因此是 UTF-8 编码。如果我单独通过那个破折号,我会得到0x96
  • @hvd 我的参考是this page - 那页错了吗?
  • @M.M 那里的字符列表没有错,只是名字。没有“ISO 1252 Latin-1”这样的东西。有ISO-8859-1,它是latin1,还有Windows-1252,它扩展了ISO-8859-1,但它本身不是任何ISO标准。
猜你喜欢
  • 2012-08-20
  • 1970-01-01
  • 2018-05-03
  • 2018-04-17
  • 2011-12-28
  • 2015-10-26
  • 2014-12-25
  • 1970-01-01
  • 2021-01-21
相关资源
最近更新 更多