sizeof (int) == 1 的实现可以“完全符合”吗? [复制]

2023-11-21

根据C标准,返回的任何字符fgetc以以下形式返回unsigned char值,“转换为int“(该引用来自 C 标准,表明确实存在转换)。

When sizeof (int) == 1, many unsigned char值超出范围。因此,其中一些可能unsigned char值可能最终会被转换为int值(转换的结果是“实现定义的或提出实现定义的信号”) of EOF,尽管文件实际上并未处于错误或文件结束状态,但仍会返回该值。

我惊讶地发现这样的实现确实存在。 TMS320C55xCCS手册文件UCHAR_MAX对应值为65535,INT_MAX有 32767 个,fputs and fopen支持二进制模式...更令人惊讶的是,它似乎将环境描述为完全一致、完整的实现(减去信号)。

C55x C/C++ 编译器完全符合 ISO 规范定义的 ISO C 标准...

编译器工具附带完整的运行时库。所有图书馆 函数符合 ISO C 库标准。 ...

这样的实现是否可以返回一个值来指示没有错误的地方,really完全符合?这是否可以证明使用feof and ferror在循环的条件部分(看起来很可怕)?例如,while ((c = fgetc(stdin)) != EOF || !(feof(stdin) || ferror(stdin))) { ... }


功能fgetc()返回一个int值范围为unsigned char仅当读取到正确的字符时,否则返回EOF这是类型的负值int.

我原来的答案(我改变了它)假设有一个整数转换为int,但事实并非如此,因为实际上该函数fgetc()已经返回类型的值int.

我认为,为了符合要求,实施必须做出fgetc()返回范围内的非负值int, 除非EOF被返回。

这样,从 32768 到 65535 的值范围将永远不会与 TMS320C55x 实现中的字符代码关联。

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

sizeof (int) == 1 的实现可以“完全符合”吗? [复制] 的相关文章

随机推荐

  • Plotly:如何设置 x 轴上时间序列的主要刻度/网格线的值?

    背景 这个问题与以下问题相关 但不完全相同 Plotly 如何检索主要刻度线和网格线的值 类似的问题也被问过但没有得到解答绘图库 here 如何将主要刻度显示为每月的第一天 将次要刻度显示为每天 情节太棒了 也许唯一困扰我的是刻度线 网格线
  • Android 上的 Scala:java.lang.NoSuchMethodError:java.lang.String.isEmpty

    我在 Android 2 2 1 上遇到以下异常 java lang NoSuchMethodError java lang String isEmpty 我正在打电话text isEmpty来自斯卡拉 任何想法 如何解决这个问题 java
  • HashicorpVault - 客户端向 HTTPS 服务器发送 HTTP 请求 - 准备探针

    目前存在一个问题 即部署 Vault Helm 图表时就绪探针失败 Vault 正在工作 但每当我描述 Pod 时都会出现此错误 我如何让探测器使用 HTTPS 而不是 HTTP 如果有人知道如何解决这个问题我会很高兴慢慢失去理智 Kube
  • 同时使用多个Spring PropertyPlaceholderConfigurer

    我有两个项目 其中一个 服务 包括第二个 核心 我在核心项目中定义了下面的 PropertyPlaceholderConfigurer
  • 为什么 C 语言中移位的优先级低于加法和减法?

    我有时在进行位操作时发现这很不方便 尽管我现在不记得任何具体的例子 我还发现它在概念上令人困惑 因为移位基本上是乘法和除以 2 的幂 我发现在 C 中使用 因为这就是 C 语言的作者所决定的 使用括号以避免混淆
  • 如何将 Android 意图传递给除了我自己的应用程序之外的任何人?

    我有一个特定的意图 NDEF DISCOVERED 其中一些我无法正确处理 所以我想将它们重定向到 android 的默认 nfc 处理程序 所以我采取了意图 setComponent null 进而startActivity intent
  • 从 ASP.Net 页面运行批处理文件

    我试图通过 ASP Net 页面在服务器上运行批处理文件 这让我抓狂 当我运行下面的代码时 没有任何反应 我可以从一些日志语句中看到该代码运行 但我传递给该函数的 bat 文件从未运行 有人可以告诉我我做错了什么吗 public void
  • jQuery 无法在 AJAX 加载页面中工作

    我正在使用 jQuery 使用 ajax 假设 test html 通过 AJAX 加载页面 它是一个简单的 HTML 文档 带有一些按钮和单击它们时关联的动画 也使用 jQuery 当我直接加载页面时 关联的 click 属性工作正常 但
  • 用纯JS动画最大高度?

    我想要为 div 的高度设置动画 这通常在 CSS 中通过动画来完成max height财产 但是我需要在 JS 中执行此操作 div 填充了经常变化的动态内容 因此无法提前知道实际高度 这是一个jsfiddle https jsfiddl
  • 神经网络如何使用遗传算法和反向传播来玩游戏?

    我碰到YouTube 上这段关于遗传算法的有趣视频 正如您在视频中看到的 机器人学会了战斗 现在 我已经研究神经网络一段时间了 我想开始学习遗传算法 这在某种程度上将两者结合起来 如何结合遗传算法和神经网络来做到这一点 在这种情况下 人们如
  • Web API 和 ValidateAntiForgeryToken

    我们有一些现有的 MVC Web 服务 它们在网页中称为 AJAX 样式 这些服务利用 ValidateAntiForgeryToken 属性来帮助防止请求伪造 我们正在寻求将这些服务迁移到 Web API 但似乎没有等效的防伪功能 我错过
  • 注释会影响 Perl 性能吗?

    我正在优化一些经常运行的 Perl 代码 每个文件每天一次 注释会减慢 Perl 脚本的速度吗 我的实验倾向于不 use Benchmark timethese 20000000 comments gt b 1 comment 100 ti
  • 访问 Scala 中的注释值

    TL DR 基本上 我正在寻找 Java 的 Scala 等价物 MyAnnotation Thing getClass getAnnotations 0 尽管我可以很高兴地发现注释并根据其类型进行查询 但我似乎无法从scala refle
  • 使用 EBS 和 ELB 环境在 Node.js Express 应用程序中将 http 转发到 https

    我使用以下命令将所有 http 请求重定向到 https 请求 我可以从日志中看到标头 x forwarded proto 从未被填充且未定义 app get function req res next http docs aws amaz
  • db2 中更新表失败,SQLCODE:-668,SQLSTATE:57016,SQLERRMC:7;

    我正在使用 db2 9 5 我在表中创建了一个列 该列已成功创建 但我无法更新表列并出现以下错误 错误 脚本行 1 1 DB2 SQL 错误 SQLCODE 668 SQLSTATE 57016 SQLERRMC 7 DB2ADMIN XC
  • 使用多个帐户登录时,Google OAuth2 返回错误请求

    当我使用多个帐户登录谷歌时 我正在尝试授权自己https stackoverflow com users login 或任何其他使用 OAuth2 的网站 I get a Bad Request Error 400 当我处于隐身模式时不会发
  • Pygame:重新调整像素大小

    使用 pygame 我创建了一个 20x20 像素窗口并添加了一个 2x2 像素矩形 当我运行该程序时 窗口尺寸非常小 我几乎看不到矩形 如何在保持像素数量不变的情况下增加窗口大小 即增加像素大小 我知道这个类似的问题 但讨论了更复杂的情况
  • 在 C# 中将 ushort 值转换为两个字节值

    如何在 C 中将 ushort 拆分为两个字节变量 我尝试了以下方法 package FrameID 是 ushort 当我尝试用纸和铅笔计算时 我得到了正确的结果 另外 如果 FrameID 大于一个字节 因此第二个字节不为零 则它可以工
  • 进行多个 ajax 回调时保持请求顺序

    我循环遍历几个项目并对每个项目发出 ajax 请求 使用 jQuery 我希望它们独立执行 但按照它们被调用的顺序填充到 DOM 中 而不是它们返回的顺序 由于某种原因 某些请求比其他请求花费的时间更长 关于此类事情的最佳实践有什么建议吗
  • sizeof (int) == 1 的实现可以“完全符合”吗? [复制]

    这个问题在这里已经有答案了 根据C标准 返回的任何字符fgetc以以下形式返回unsigned char值 转换为int 该引用来自 C 标准 表明确实存在转换 When sizeof int 1 many unsigned char值超出