首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >与EOF比较时,字符类型使用int

与EOF比较时,字符类型使用int
EN

Stack Overflow用户
提问于 2011-12-11 04:39:56
回答 2查看 2.3K关注 0票数 5

引用Kernighan和Ritchie的“C编程语言”第16页-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>

main()
{
int c;
c = getchar();

while(c!=EOF)
{
    putchar(c);
    c = getchar();
} 

getchar();
return 0;
}

“类型char专门用于存储此类字符数据,但是可以使用任何整数类型。我们使用int有一个微妙但重要的原因。问题是如何将输入的结尾与有效数据区分开来。解决方案是,当没有更多的输入时,getchar返回一个独特的值,这个值不能与任何真正的字符混淆。这个值称为EOF,用于“文件的结尾”。我们必须声明c是一个大到足以保存getchar返回的任何值的类型。我们不能使用char,因为除了任何可能的char之外,c必须足够大以容纳EOF。因此我们使用int。“。

我抬头看了看stdio.h,上面写着#define EOF (-1)

书中明确指出,char不能被使用,而这个程序“工作得很好”(参见编辑),c作为char数据类型。怎么一回事?有人能用位和有符号的值来解释吗?

编辑:

正如Oli在回答中提到的那样,程序无法区分EOF255。所以它不能正常工作。我想知道发生了什么--你是说当我们比较c!=EOF时,EOF值被转换为char值= 255 (二进制数为11111111;即用2的补码表示法写入EOF的0到7位)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-11 04:41:17

您的程序不能正常工作;它无法区分EOF255

它看起来工作正常的原因是因为char可能在您的平台上是signed,所以它仍然能够表示-1

票数 4
EN

Stack Overflow用户

发布于 2011-12-11 04:50:03

getchar结果是转换为unsigned char,然后转换为intEOF的输入字符,即它将在-1-255范围内,即257个不同的值,如果不合并其中两个值,就不能将其放入8位char中。实际上,您可能会将EOF误认为是有效字符(如果char没有签名就会发生这种情况),或者将另一个字符误认为是EOF (如果对char进行签名,则会发生这种情况)。

注意:我假设一个8位的char类型,我知道这个假设不是标准支持的,它只是目前为止最常见的实现选择。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8464030

复制
相关文章
ChatGPT 的 AskYourPDF 插件所需链接如何获取?
目前 ChatGPT 主要有两款 PDF 对话插件,一个是 AskYourPDF 一个是 ChatWithPDF(需 ChatGPT Plus),他们都可以实现给一个公共的PDF 链接,然后进行持续对话,对读论文,阅读 PDF 格式的文档非常有用。
明明如月学长
2023/05/22
3.6K0
ChatGPT 的 AskYourPDF 插件所需链接如何获取?
TRICONEX 3624 更改或扩展所需的抽象接口
SIS支持与OPC UA标准相关的所有安全功能。它还为不同的用户和应用提供数据,并支持多个OPC UA端点(客户端或服务器),每个端点都有自己的证书。此外,SIS根据IP地址提供过滤访问,并可以检测对OPC UA身份验证的拒绝服务攻击。
用户10384942
2023/04/23
4640
TRICONEX 3624 更改或扩展所需的抽象接口
JIRA 链接 bitbucket 提示错误 Invalid OAuth credentials
Invalid OAuth credentials. Check Jira log for more information.
HoneyMoose
2021/07/19
4780
JIRA 链接 bitbucket 提示错误 Invalid OAuth credentials
JIRA安装过程中链接mysql的问题!
测试下我使用的是mysql7.5的版本,JIRA是6.3.6!这是版本引起的问题!
庞小明
2019/05/25
9550
wordpress更改固定链接后404
wordpress的固定链接对于博客的seo优化是非常重要的。因为有些默认设置并不怎么友好,所以我们可以自定义设置自己的想要的固定链接,比如自定义连接结构为:/%post_id%.html。但是往往我们更改之后会出现404页面,这是网站的伪静态出了问题。 下面是在不同环境下的不同解决方法。
SweetHunter
2020/05/10
2.1K0
WordPress更改固定链接诸项事宜
本文目录 前言 具体思路 更改固定链接 添加网站改版规则 规则选择说明 规则编写 后言 前言 记一次站点更改WordPress固定链接并提交百度站长平台链接改版。近日,由于看着 朴素 的链接不顺眼,
神无月
2018/06/22
1.8K0
WordPress更改固定链接404的解决办法
WordPress 网站建设中,固定链接设置是必不可少的,好的固定链接更美观、易用、利于用户分享和搜索引擎收录,需要注意的是,要使设置的固定链接生效的前提是你的网站环境支持伪静态。 常用的参数有 日期和名称型 /%year%/%monthnum%/%day%/%postname%/ 月份和名称型 /%year%/%monthnum%/%postname%/ 数字型 /archives/%post_id% 文章名 /%postname%/ ID+html 型 /%post_id%.html 很多站长在玩
沈唁
2018/05/24
7.5K0
Blazor 获取当前的 Url 链接
在 Blazor 获取当前页面所在的 URL 链接可以通过 NavigationManager 类辅助获取,也可以通过此方法获取当前域名等信息
林德熙
2022/08/12
3.6K0
获取url链接参数
/******封装获取url链接参数开始******/ getWxCode(name){ return decodeURIComponent((new RegExp('[?|&]' + name
〆 千寻、
2020/03/12
2.4K0
WordPress如何获取,分类的链接?
前些时在开发主题时遇到一个小问题,始终想不明白,就是如何在子分类中获取到父分类的链接。
Kit
2021/08/02
1.9K0
WordPress如何获取,分类的链接?
Photos存储、获取、更改照片详解
前言: 相册保存到系统相册中,通常有三种办法: UIImageWriteToSavedPhotosAlbum() 方法保存 是使用 Photos 框架来实现。 ALAssetsLibrary 在iOS9.0之后就被标记为过时方法,苹果建议使用Photos框架代替 问:UIImageWriteToSavedPhotosAlbum()保存图片很简单,但为什么还要用Photos? 答: 1、Photos可以为相册相片做标识,方便保存后取出它们 2、Photos有同步操作,可以同时保存多张图片 3、可以存储
Dwyane
2018/05/22
2.1K0
wordpress更改固定链接后旧链接301跳转当前固定连接
为避免之前文章内的链接和搜索引擎收录的链接失效,我们再可以将之前的链接301跳转到新链接
AlexTao
2019/12/12
1.2K0
[海盗湾] 磁力链接批量获取
这个工具的用途就是批量获取海盗湾的磁力链接,例如:https://thepiratebay.cr/search/tokyo%20hot
obaby
2023/02/24
2.6K0
获取指定类型的设备,符号链接
头文件:DeviceInterfaceClassGUID.h //keyBoard DEFINE_GUID(GUID_CLASS_KEYBOARD, 0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd); //Mouse DEFINE_GUID(GUID_CLASS_MOUSE, 0x378de44c, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x
obaby
2023/02/28
1.1K0
获取指定类型的设备,符号链接
WordPress获取所有文章链接
填一下以前文章中提到的WordPress获取所有文章链接的坑。 使用方法 在以下的PHP代码中选择一个复制 新建GetId.php文件,将代全部码粘贴 将GetId.php文件上传至网站根目录 通过浏览器访问该文件即可(例如:www.qcgzxw.cn/GetId.php) 显示内容即为所有已发布的文章链接,复制后保存至本地即可(文件使用完毕后记得删了) PHP代码 1.获取所有已发布文章(ID) 文章链接:https://www.qcgzxw.cn/2579.html 红色字体即为前缀,绿色即为后缀 <
神无月
2018/06/25
4.5K2
Selenium - 获取页面跳转之后的链接
今天在使用Flask+Selenium开发的时候遇到了一个天坑,这个页面会自动跳转到新页面,但是我使用driver.current_url无法获取到最新的页面url,获取到的还是driver.get(url)的
用砖头敲代码
2022/11/22
3.2K0
WordPress获取所有文章链接
使用方法 在以下的PHP代码中选择一个复制 新建GetId.php文件,将代全部码粘贴 将GetId.php文件上传至网站根目录 通过浏览器访问该文件即可(例如:www.qcgzxw.cn/GetId
神无月
2018/05/11
2.9K2
WordPress获取所有文章链接
JIRA笔记(一):安装部署JIRA
(一)     说明 说明JIRA的安装及破解。 操作系统:WIN 10 数据库:Oracle 12C R2(这个版本的jira,atlassian建议的是 12C R1,不过R2也能用,其他版本不清楚) Jira:7.10.1 数据中心 JDK:1.8(atlassian建议的是1.8) 下面这个地址,有jira支持平台的相关信息(这里有个说明,如果使用Windows或Linux安装程序,不需要安装JDK,因为jira安装程序包含了JRE。这个没试过,因为JDK环境很多应用都能用上,所以操作系统一安装就配
free赖权华
2018/07/04
8.5K0
WordPress怎么获取分类链接?
WordPress怎么获取分类链接?某些模板主题首页多以分类列表的形式展示内容,一般需要在适当位置添加某分类归档页面链接的按钮,下面的代码可以帮你实现。
主机教程网2bcd.com
2022/11/02
8960
JIRA安装
mkdir –p /home/jira mkdir –p /home/jira_home 不能用相同目录,必须两个目录
后端云
2018/10/24
1.7K0

相似问题

获取JIRA REST中的链接问题

14

使用Python从Jira获取链接的问题

21

通过jira-python获取发布的Epic链接

17

如何获取Jira更改的每周报告

14

链接JIRA和Bitbucket

310
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文