为什么八进制序列 '\0101' 不等于十进制 65?

2024-03-05

考虑这个 C 程序:

unsigned char c2 = '\0101';
printf("%c, %d\n", c2, c2);

我相信输出应该是:A 65但实际输出是1 49.

推理:字符常量中以 0 作为前缀,声明为八进制格式,而 101 的八进制值为 65。那么 65 对应的 ASCII 值为 A。有人能告诉我哪里出错了吗?我尝试了与“\x41”相同的十六进制代码,它给出了所需的输出。


八进制格式字符的转义序列是一个反斜杠,后跟最多三位数字,这意味着最后一个数字不是转义序列的一部分。这是在第 6.4.4.4p1 节中指定的C标准 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf关于“字符常量”:

octal-escape-sequence:
  \ octal-digit
  \ octal-digit  octal-digit
  \ octal-digit  octal-digit  octal-digit

So '\0101'实际上是一个多字节字符常量:第一个是\010这是值 8,第二个是字符'1'.

领先的0用于指定一个numeric八进制常数,不是特点八进制常量,因此在这种情况下不需要前导 0:

unsigned char c2 = '\101';

如果您确实想使用数字八进制常量,您可以这样做:

unsigned char c2 = 0101;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么八进制序列 '\0101' 不等于十进制 65? 的相关文章

随机推荐

  • hibernate.default_schema 是什么意思?

    我正在读一本Ben Scheirman 的博客文章 http benscheirman com 2007 12 blame nhibernate why not关于他为了提高性能而进行的一些 NHibernate 调整 文章最后有 第 7
  • Terraform:添加单个规则时,所有安全组规则都会被销毁并替换

    地形信息 地形 v0 12 18 提供商 aws v2 43 0 提供者 模板 v2 1 2 我定义了一个安全组 如果我跑terraform plan or terraform apply与我现有的堆栈相比 没有任何待处理的更改 状态完全是
  • 使用 EF、存储库、实体清理解决方案(项目)结构

    我喜欢保持项目的结构尽可能干净 样本 BlogApp sln BlogApp Data BlogModel edmx the EF mappings Post cs I end up having partial classes in he
  • EL表达式语言中的instanceof检查

    有没有办法执行instanceof入住 EL 吗 E g
  • 如何用刻度线包裹 D3 标签

    我正在尝试让我的标签正确包装 我需要使刻度线和标签相匹配 我正在对标签使用换行功能 但无法使其与 tspan 一起使用 工作演示 https codesandbox io s react d3 pie chart forked nhh85
  • 为什么使用 SimpleDateFormat 时出现 ParseException [重复]

    这个问题在这里已经有答案了 我用eclipse写了下面的代码 String d 2014 6 1 21 05 36 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd HH mm ss
  • MySQL 中的条件内连接语句

    有没有一种方法可以根据另一个表中字段的值有条件地更改我要内部联接的表 这是我到目前为止得到的 但它是错误的 SELECT j jobID j jobNumber CASE WHEN j idType dealership THEN d de
  • GCD:如何更改计时器触发间隔

    无论如何 这听起来可能是一个新手问题 我对 GCD 很陌生 我有以下代码 int interval 2 int leeway 0 dispatch queue t queue dispatch get global queue DISPAT
  • Scrapy 抓取 div 具有多个类?

    我正在尝试使用 产品 类来获取 div 问题是 一些具有 product 类的 div 也具有 product small 类 所以当我使用xpath div class product 它仅捕获具有一个类的 div 而不捕获多个类的 di
  • 使用 PowerShell 对文件进行 AES 加密

    我能够使用此脚本成功对文件进行 AES 加密here https gallery technet microsoft com EncryptDecrypt files use 65e7ae5d file 165403 14 使用 Windo
  • 通过 Python 更改 Konsole 标题

    如何更改 Python 中的 Konsole 标题 我找到了这段代码 gt gt gt import sys gt gt gt sys stdout write x1b 2 test x07 但它仅适用于 Gnome 终端 不适用于 Kon
  • 如何从 C# 执行批处理文件?

    解决方案见文末 我不认为这会很难 我有一个命令文件 da cmd 其中包含 copy b d 7zS sfx d config txt d files 7z d setup exe 但 C 的这些行不会执行它 Process Start d
  • 更改 pdf 和非 Google 文档(EDU 域)的 acl

    我在尝试从 Google Apps 脚本 Google Apps for Education 更改文件所有权时收到此错误 GDataServiceException您尚无法更改该项目的所有者 我们正在努力 相同的代码适用于 Google A
  • 如何在mysql中存储类型可以是数字、日期或字符串的数据

    我们正在开发一个监控系统 在我们的系统中 值是由运行在不同服务器上的代理报告的 报告的观察结果可以是如下值 一个数值 例如 CPU USAGE 55 表示 55 的 CPU 处于使用状态 使用 某些事件被解雇 例如 备份完成 状态 例如SQ
  • PHP 中 preg_replace() 的字符串的最大长度?

    我发现如果我尝试在很长的字符串上使用 preg replace PHP 会向我的浏览器返回一个空页面 而不显示错误消息 我能够在我的测试环境中重现这个错误 preg replace 可以处理的字符串的最大长度是多少 是否可以增加这个长度 对
  • Firestore 查询 - 一对多关系

    我将开发 Android 移动应用程序并使用 Firebase 作为后端 我是 NoSql Firestore 的新手 在我的应用程序中 用户有很多主题 一个主题有很多帖子 帖子有很多评论和一张图片 用户也有很多追随者 在这种情况下 我如何
  • C# 4.0:将动态转换为静态

    这是一个与我问的另一个问题相关的分支问题here https stackoverflow com questions 2783616 net 4 0 dynamic object used statically 我将其分开 因为这实际上是一
  • Visual Studio 第一次启动需要很长时间

    我在 Windows 7 64 位计算机 RAM 为 6 GB 上下载并安装了 Visual Studio 2013 Profession Trial 但是 当我第一次启动它时 它说 我们正在准备就绪 感谢您的耐心等待 它已经持续了大约一个
  • 无框架的 C++ GUI

    据我了解 没有办法让 C GUI 设计器将您的应用程序作为一个独立的可执行文件发布 所有 3rd 方框架都以 dll s 等形式添加依赖项 无论是 MFC Qt WTL wxWidgets GTK 这让我只剩下一种解决方案 使用 Win32
  • 为什么八进制序列 '\0101' 不等于十进制 65?

    考虑这个 C 程序 unsigned char c2 0101 printf c d n c2 c2 我相信输出应该是 A 65但实际输出是1 49 推理 字符常量中以 0 作为前缀 声明为八进制格式 而 101 的八进制值为 65 那么