char 的整数存储解释

news2024/9/26 21:55:18

c3daa479c3bf48ad88dc28d5ff748f7d.png

目录

1.原因讲解

1.有符号类型的char

2.无符号类型的char(0-255)

 练习题1.

 练习题2.

练习题3.


小心!VS2022不可直接接触,否则!没这个必要,方源面色淡然一把抓住!顷刻炼化! 


1.原因讲解

1.有符号类型的char

我们知道char类型只有一个字节,一个字节是8bit位

在计算机中,计算机只会识别二进制,并以补码的形式存储在内存中

8bit位的二进制补码可以列举出很多种情况,如图:

5637baa92b3947aea0c86d82166cc5a8.jpeg

8bit位的有符号二进制只能列举出这么多情况,从0开始,二进制不断地加1,最终完成一个闭环,127的补码加1后为-128,-1的补码加1后又回到0,如此循环,所以char类型是127—— -128


2.无符号类型的char(0-255)

无符号类型的char是0-255,是因为无符号类型中,每一位都算有效位,没有符号位的存在,所以补码的每一位都算有效位,如图:

1ed465500f6549fca4097bcfc686f095.jpeg

因此,无符号类型的char的范围是0-255,从0不断地加1,最终加到255

补码达到255时,再加1就会回到0,实现闭环循环


 练习题1.

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
int main()
{	
	char a[1000];
	int i;
	for (int i = 0; i < 1000; i++) {
		a[i] = -1 - i;
	}
	printf("%d", strlen(a));
}	

 许多人会认为,a[i]会储存-1到-1000,但真的如此吗?

如果是这样想的话,那就出错误了

因为整数在有符号中储存只能存储127到-128的整数,那存储的是什么,打印的又是什么呢?

代码分析及结果:

详细讲解如下图:

1ec25fbf4cda435ba772767412e3dd7d.png


 练习题2.

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
int main()
{
	unsigned char i = 0;

	for (i = 0; i <= 255; i++) {
		printf("hello world\n");
	}
}	

  这次打印出来的结果是什么呢?难道是打印256次 "hello world" 吗?

恭喜你又错了,正确答案是死循环打印 "hello world"

详解如下图:

545d5f7e5ad4451091ae3550dc30acdb.png


练习题3.

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
int main()
{
	unsigned int i;
	
	for (i = 9; i >= 0; i--) {
		printf("%u\n", i);
	}
}	

  详细讲解如下图:

2a29e47eb72e4183a6579d604fc7a046.png

8fdd48caf53e46a897fd8a5554dbb454.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AUTOSAR_EXP_ARAComAPI的5章笔记(6)

返回目录 5.3.5.5 Event-Driven vs Polling-Based access ara::com实现完全支持事件驱动和轮询的方式来访问新数据。 对于轮询方式&#xff0c;典型的用例是&#xff0c;一个应用程序被周期性地触发并在特定的截止时间前进行一些处理。这是调节器/控制算法的典型模式 —— 循…

如何清除KylinOS桌面操作系统桌面密钥环?

如何清除KylinOS桌面操作系统桌面密钥环&#xff1f; 1、问题现象2、解决 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、问题现象 打开桌面应用会出现【解锁秘钥环提示】&#xff1a; 2、解决 1、安装seahorse sudo apt-get insta…

【JavaEE】IP协议 应用层协议

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 &#x1f576;️一.IP地址 IP协议&#xff08;Internet Protocol&#xff09;是TCP/IP协议族中最核心的协议之一&#xff0c;它定义了数据包在网络中传输的标准…

Word中插入当前日期与时间

Word中插入当前日期与时间 通过构建基块的方法快速插入当前日期与时间 快捷键操作 快捷键具体功能说明 Alt Shift D 插入当前日期date Alt Shift T 插如当前时间time Ctrl Shift F9 使得域文本变为正常文本 Ctrl F11 锁定域更新域菜单工具会变为黑色 C…

音视频入门基础:AAC专题(5)——FFmpeg源码中,判断某文件是否为AAC裸流文件的实现

一、引言 通过FFmpeg命令&#xff1a; ./ffmpeg -i XXX.aac 可以判断出某个文件是否为AAC裸流文件&#xff1a; 所以FFmpeg是怎样判断出某个文件是否为AAC裸流文件呢&#xff1f;它内部其实是通过adts_aac_probe函数来判断的。从《FFmpeg源码&#xff1a;av_probe_input_for…

Qt/C++ 了解NTFS文件系统,获取首张MFT表数据,解析文件记录头内容找到第一个属性偏移地址

系列文章目录 一、Qt/C 了解NTFS文件系统&#xff0c;了解MFT(Master File Table)主文件表&#xff08;一&#xff09; 二、Qt/C 了解NTFS文件系统&#xff0c;解析盘符引导扇区数据获取MFT(Master File Table)主文件表偏移地址 三、Qt/C 了解NTFS文件系统&#xff0c;获取首张…

还在为企微联系人烦恼?一招解决!企业微信2024年效率升级全攻略

现在信息多得让人眼花&#xff0c;微信里头那些企业微信的联系人是不是让你头疼&#xff1f; 看着满屏的绿色头像&#xff0c;心里想&#xff1a;“我就想和朋友聊聊天&#xff0c;怎么就这么难&#xff1f;”别急&#xff0c;今天教你个办法&#xff0c;轻松搞定这些小烦恼&am…

【无标题】达瓦达瓦

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

胤娲科技:解锁AI奥秘——产品经理的智能进化之旅

当AI不再是遥不可及的科幻 想象一下&#xff0c;你走进一家未来感十足的咖啡厅&#xff0c;无需言语&#xff0c;智能咖啡机就能根据你的偏好调制出一杯完美的拿铁&#xff1b; 打开手机&#xff0c;AI助手不仅提醒你今天有雨&#xff0c;还贴心推荐了最适合雨中漫步的音乐列表…

C语言中的GCC的优化和数组的存放方式、Cache机制、访问局部性

“我们仍需共生命的慷慨与繁华相爱&#xff0c;即使岁月以刻薄和荒芜相欺” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;第一题&#xff1a;***什么是gcc&#xff1a;***C 语言中&#xff0c;“gcc -O2”是使用 GCC 编译器时的一个编译选项。第一部分&#xff1a;为什…

利用yolov8模型实现的西红柿成熟程度检测系统包含源码+配置说明(基于YOLOv8的西红柿成熟程度检测系统)

西红柿成熟程度的检测对于农业生产尤为重要&#xff0c;可以提高收获效率和产品质量。本项目利用YOLOv8&#xff08;You Only Look Once v8&#xff09;模型实现了一个高效的西红柿成熟程度检测系统。该系统可以自动识别西红柿的颜色&#xff0c;从而判断其成熟程度。 关键特性…

pycharm从VCS获取项目报错unable to access:Recv failure:Connection was reset

&#xff08;已老实求放过&#xff09; 版本&#xff1a;PyCharm Community Edition 2024.2.1 【解决办法】取消Git的网络代理&#xff0c;在目标路径所在文件夹处右键选择Git Bash Here&#xff0c;输入以下命令&#xff1a; git config --global --unset http.proxy git …

2024最新版零基础学习Modbus通信协议(保姆级教程)

合集 - 上位机开发(2) 1.零基础学习Modbus通信协议09-13 2.RS485与ModbusRTU09-10 收起 大家好&#xff01;我是付工。 2012年开始接触Modbus协议&#xff0c;至今已经有10多年了&#xff0c;从开始的懵懂&#xff0c;到后来的顿悟&#xff0c;再到现在的开悟&#xff0c;…

STM32的寄存器深度解析

目录 一、STM32 寄存器概述 二、寄存器的定义与作用 三、寄存器分类 1.内核寄存器 2.外设寄存器 四、重要寄存器详解 1.GPIO 相关寄存器 2.定时器相关寄存器 3.中断相关寄存器 4.RCC 相关寄存器 五、寄存器操作方法 1.直接操作寄存器 2.使用库函数操作寄存器 六…

4个方法教你图片转PDF怎么弄。

我们有时候会接触了一些重要的图片文件或者资料&#xff0c;想要装换成可编辑的PDF格式&#xff0c;更方便自己管理。这时候就会需要转换的工具&#xff0c;我这里就有&#xff14;款可以完成这种转换的高效工具可以分享给大家。 1、365PDF转换软件 直通车&#xff1a;www.pdf…

软件设计之JavaWeb(3)

软件设计之JavaWeb(3) 此篇应在MySQL之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷全新JavaWeb教程&#xff0c;企业主流javaweb技术栈 资料可以去尚硅谷官网免费领取 此章节最好学完JDBC观看 学习内容&#xff1a; 请求转发…

jenkins流水线+k8s部署springcloud微服务架构项目

文章目录 1.k8s安装2.jenkins安装3.k8s重要知识1.简介2.核心概念3.重要命令1.查看集群消息2.命名空间3.资源创建/更新4.资源查看5.描述某个资源的详细信息6.资源编辑7.资源删除8.资源重启9.查看资源日志10.资源标签 4.k8s控制台1.登录2.界面基本操作1.选择命名空间2.查看命名空…

损耗金属件检测系统源码分享

损耗金属件检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

全球和局部精细化:提升大模型推理能力的新方法

人工智能咨询培训老师叶梓 转载标明出处 尽管大模型在数学、科学或编程任务上表现出优异的推理精细化能力&#xff0c;但它们在没有外部反馈的情况下&#xff0c;很难识别何时何地需要精细化。为了解决这一问题&#xff0c;来自Meta的FAIR团队和佐治亚理工学院的研究者们提出了…

智能营销才是营销的未来

智能营销新纪元&#xff1a;大模型如何为运营与产品经理赋能 在数字化浪潮席卷全球的今天&#xff0c;营销行业正经历着一场前所未有的变革。随着人工智能技术的飞速发展&#xff0c;特别是大模型技术的兴起&#xff0c;为产品经理和运营人员提供了前所未有的工具与视野&#…