【char类型转换】

2023-11-10


前言

今天我们一起来了解一下关于整形提升和进制转换的问题


经典例题

典例1

计算下面程序打印的结果

#include<stdio.h>
int main(){
	char a=-1;//字符类型
	signed char b=-1;//有符号字符类型
	unsigned char c=-1;//无符号字符类型
	printf("%d %d %d\n",a,b,c);
	return 0;
}

先仔细读题:题目中给出三个字符型变量a、b、c,但同时他们的类型又略有不同,最后的结果都为%d(整形)类型。

在这里插入图片描述
在这里插入图片描述

运行结果如下:
在这里插入图片描述

由上题可知,数据的值与它本身的类型有着很大的关系,那下面我们对上题进行一下修改来看看会有什么不同吧!


变式1

计算下面程序打印的结果

#include<stdio.h>
int main(){
	char a=-1;//字符类型
	signed char b=-1;//有符号字符类型
	unsigned char c=-1;//无符号字符类型
	printf("%u %u %u\n",a,b,c);
	return 0;
}

这里我们将打印类型改为了%u(无符号整形),下面继续让我们来画图探究结果。

在这里插入图片描述

运行结果如下:
在这里插入图片描述

由上我们可以得出数值的打印既和数据原来的类型有关,也和打印出来的类型也有关。
%u 是打印无符号数,认为内存中存放的是无符号数
%d 是打印有符号数,认为内存中存放的是有符号数
整形提升时看的是数据原本的类型
有符号数补充符号位
无符号数补 0
打印的时候看打印时设定的类型


典例2

计算下面程序打印的结果

#include<stdio.h>
int main(){
	char ch = -128;
	printf("%d\n", ch);
	printf("%u\n", ch);
	return 0;
}

我们已经知道char == signed char ,它的取值范围为-128~127
这里分别以%d和%u的形式打印,就让我们继续画图分析。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


总结

以上就是今天我们要讲解的几道题目,这里熊猫想提醒大家的是,一个数据在 存储 和 取出 的时候不可以简单的认为自己看到的是多少就是多少,他和数据本身的类型和打印解析时的类型也有很大关系,希望大家和我在以后遇到这种问题是可以想到今天我们讲的这些内容。
在此感谢大家对的支持,这是熊猫持续更新的巨大推进力!

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

【char类型转换】 的相关文章

  • Automapper、Mapper 未初始化。使用正确的配置调用初始化

    当我尝试将数据提交到数据库时 出现以下错误 Success false Error true ErrorType 2 Message System InvalidOperationException Mapper 未初始化 使用适当的配置调
  • Qt 和 Sqlite 示例

    我正在寻找一些使用 Qt 的示例代码 它是带有 Sqlite 驱动程序的 SQL 模块 我需要示例的主要原因是我之前有 Qt 数据库接口的经验 并且 Sqlite 在字段类型方面有一些奇怪的行为 类型是按字段存储的 而不是按列存储的 The
  • 从服务器下载图像(cUrl,但接受建议)C++

    我试图通过从服务器 网站 下载图像来设置旋转背景图像 并尝试使用curl 来执行此操作 但是在执行此操作方面取得了0 成功 我的代码的 缩短的 版本如下 我没有收到错误 但是 如何 临时 保存该图像以将其显示为背景 是否有图像 类型变量 或
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • 我应该使用字节还是int?

    我记得曾在某处读到 即使您只需要字节 使用 Int32 更好 就性能而言 它 据说 仅适用于您不关心存储的情况 这是有效的吗 例如 我需要一个保存一周中某一天的变量 我是吗 int dayOfWeek or byte dayOfWeek E
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • 来自同一基模板类的 C++ 重写函数,具有多重继承不明确的函数调用

    我需要打电话init int iNumber 从基类派生的函数 基类 h pragma once include stdafx h template
  • C 编程中的 rand() 问题? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么我总是用 rand 得到相同的随机数序列 https stackoverflow com questions 1108780 why do i always get the same seque
  • 批量插入,asp.net

    我需要获取与会员相对应的 ID 号列表 在任何给定时间处理的数量可能在 10 到 10 000 之间 我可以毫无问题地收集数据 解析数据并将其加载到 DataTable 或任何内容 C 中 但我想在数据库中执行一些操作 将所有这些数据插入表
  • 如何使用 itextsharp 更改 PDF 公式的按钮图标?

    我目前正在尝试使用 itextsharp 填写预定义的表单 除了添加图像之外 一切正常 这之前已经在 Adob e 的 FDF 工具包中运行过 该工具包已编译为 NET 1 1 这不再适用于 NET 4 0 我改用了 itextsharp
  • 为什么 C# 中的命名空间允许循环依赖?

    在 c 中 您可以在文件 a cs 其命名空间为 MyApp A 中拥有一条语句 using MyApp B 而文件 b cs 其名称空间为 MyApp B 已经包含该语句 using MyApp A 如果类似的依赖关系存在于不同的 dll
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • 在 OSX 上检测 Objective C 或 C++ 中的文件夹访问(如 fs_usage 命令)

    我正在 OSX 上开发实时病毒扫描程序 OSX 的命令行命令fs usage可以通过以下方式确定文件夹访问权限 并且只能以 root 用户身份运行 fs usage w f pathname grep Users Documents Use
  • 使用 StartServiceCtrlDispatcher 与 StartService 从 C 语言启动 Windows 服务有什么区别?

    我尝试使用 StartServiceCtrlDispatcher 中所述https msdn microsoft com en us library windows desktop bb540475 v vs 85 aspx https m
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest
  • 对 Action 方法的两个并行 ajax 请求排队,为什么?

    我正在使用 ASP NET MVC 开发一个视频网站 我希望在我的应用程序中拥有的一项功能是转码视频 但由于转码过程可能非常耗时 我想向客户端用户展示该过程的进度 因此 我的架构是使用一个控制器操作来处理整个转码过程 并将其进度写入存储在服
  • 如何正确处置注入的DLL线程?

    我将一个 DLL 注入到目标进程中 以在玩 MMORPG 时充当助手 当前功能将按键转换为鼠标点击 因为 MMORPG 要求用户移动鼠标才能实现某些功能 这是我所鄙视的 假设我出于某种原因想要取消注入 DLL 我该怎么做呢 这个方法干净吗
  • 为什么在一行中使用这个 C++ 函数两次会导致编译错误?

    我在尝试在 Visual C 2010 中实现智能相等测试宏类型模板函数时遇到了一些麻烦 该函数与VS 中关于模板函数默认参数的错误 https stackoverflow com questions 10343177 why do i g
  • Web 和 winforms 的 .Net 身份验证

    我有一个为客户端构建的 ASP NET Web 应用程序 它使用默认的 ASP NET 表单身份验证 他们现在请求一个能够 与 Web 应用程序一起工作的桌面 WinForms 应用程序 我已经创建了 Web 服务来访问他们想要从 Web

随机推荐

  • 一个完整的机器学习项目实战代码+数据分析过程:哈佛大学能耗预测项目(Prediction of Buildings Energy Consumption)

    目录 哈佛大学能耗预测项目 背景介绍 数据采集 探索性数据分析 预测模型 机器学习方法 总结和结论 项目资料获取 https download csdn net download github 38486975 11120922 其他获取方
  • C++通过命令参数读文件

    老师奇奇怪怪的 要求 数据文件名通过命令参数的方式提交给应用程序 数据文件名不能写在程序中 在网上搜了一些相关的博客比较少 成功后记录如下 一 写在前面 argc argument count 表示传入main函数的参数个数 argv ar
  • 掌握Python的X篇_37_类的实例化、类方法

    上篇我们已经学习了python中的类 并且学习到可以通过class关键字定义类 而类的最基本特性就是它是一个名称空间 本篇将会学习类的实例化 文章目录 1 类的实例化 1 1 init 函数 1 2 实例化流程 2 类方法与成员 1 类的实
  • Sql Server 日期查询

    当前月 USE DBName Go Use Database Declare Variables DECLARE ReportGenerationDate DATE DECLARE ReportMonth INT DECLARE Repor
  • freertos实用指南_大数据及其掌握方法(实用指南)

    freertos实用指南 随着技术的兴起 数十年来 来自人 企业和机器的数字信息呈指数增长 数据现在被认为是21世纪的石油 几十年前产生兆字节数据的组织现在每小时产生PB级新数据 例如 全球超过33亿智能手机用户 大数据介绍 每个人都在数以
  • SpringBoot单元测试之mock静态方法

    The article summary 1 为什么要对静态方法mock 2 如何使用 powermock 对静态方法 mock 2 1 添加依赖 2 2 编写测试类 2 3 需要注意的问题 1 为什么要对静态方法mock mockito库并
  • 学术答辩PPT模板分享

    130套学术答辩PPT模板分享 链接 https pan baidu com s 1S7YbRlzOeyqwdc9ay5 DYA 提取码 irxg 动态PPT 49套 静态PPT 34套 答辩PPT 24套 精选动态PPT 21套
  • 如何做口碑营销?企业实施网络口碑营销的技巧

    随着互联网的发展 互联网早期的红利期已经完结 现在的互联网行业是用户开发成本越来越高 电子商务的转化率也越来越低 为了降低用户的开发成本和提高转化率 企业一定要重视口碑营销 口碑营销是靠口碑自动去传播 老客户带来新客户的营销模式 成本极低效
  • 10.BIO、NIO、AIO、多路复用IO的区别(图解)

    学习之前 我们先来了解一下IO模型 同步阻塞IO Blocking IO 即传统的IO模型 同步非阻塞IO Non blocking IO 默认创建的socket都是阻塞的 非阻塞IO要求socket被设置为NONBLOCK 注意这里所说的
  • ansible 添加 cron 任务

    找到相应的role 假设以storm nimbus为例 将要完成的任务脚本放在files目录下 例如 vim roles storm nimbus files storm recovery bin bash service storm me
  • KMP算法-超级无敌详细(嚼碎了喂你)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 朴素的模式匹配算法 BF暴力匹配算法 二 KMP算法 1 next 数组求法 2 next j 数组代码分析 三 计算出与主串匹配的位置 总结 前言 提示
  • vue3导入element-plus的index.css路径问题

    在做vue3项目的过程中 使用了element plus这个开源组件库 在引入index css这个样式的时候出现了一个问题 使用了之前的 import element plus lib theme chalk index css 导入时路
  • js 三个点 “...“ 省略号的语法

    js 三个点 省略号的语法 概念 是ES6的新语法 该写法在js的不同语境中有不同的解释 可解释为展开语法 Spread syntax 和剩余语法 Rest syntax 写法相同 但作用却是完全相反的 使用时要注意区分 本文主要参考MDN
  • linux 执行 mysql存储过程_mysql 存储过程 执行

    mysql存储过程 mysql存储过程 存储过程 Stored Procedure 是在大型数据库系统中 一组为了完成特定功能的SQL 语句集 经编译后存储 在数据库中 用户通过指定存储过程的名字并给出参数 如果该存储过程带有参数 来执行它
  • 期刊分类—CSSCI、A类、B类、C类、核心期刊的区别

    文章与视频资源多平台更新 微信公众号 知乎 B站 头条 AI研习图书馆 深度学习 大数据 IT编程知识与资源分享 欢迎关注 共同进步 CSSCI A类 B类 C类 核心期刊的区别如下 一 创刊单位不同 1 cssci 是南大核心 南京大学评
  • c++变量模板总结

    一 定义 泛化 全特化 偏特化 使用方法 include
  • 几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍

    富文本编辑器 富文本编辑器 Rich Text Editor RTE 是一种可内嵌于浏览器 所见即所得的文本编辑器 它提供类似于Office Word 的编辑功能 方便那些不太懂HTML用户使用 富文本编辑器的应用非常广泛 它的历史与图文网
  • CMOS图像传感器OV7725数据手册

    下载地址 阿里云盘分享https www aliyundrive com s RuxT3cpHpiK
  • windwos、linux在虚拟机中共享文件

    因为工作的关系 目前的工作机器是ubuntu桌面版 因为有时需要用到windows下的软件 因此装了个虚拟机virtualbox 在里面装个了个windows 为了能够让两个机器相互访问 需要设置一个共享文件夹 在网上找了一圈 基本上都是w
  • 【char类型转换】

    文章目录 前言 经典例题 典例1 变式1 典例2 总结 前言 今天我们一起来了解一下关于整形提升和进制转换的问题 经典例题 典例1 计算下面程序打印的结果 include