int型数据向char型数据强制转换原理

C语言中int是四个字节,char是1个字节,占字节多的int型向字节少的char型强制类型转换的原理就是字节截断。
转换时系统会自动删除高位的三个字节,只留下低位的一个字节,这就是int型想char型转换时丢失数据的原因。例如数据b是0X1234,为十六进制,在计算机中是这样存储的:

           0000 0000 0000 0000 0001 0010 0011 0100

共4个字节。转换成char类型后,前3个字节丢弃,即结果是

0011 0100

共1个字节,对应的十进制是52

转换后的数据也是有迹可循,char型数据的范围是-128~127,你可以把他想象成一个圆盘,最上面是0,向右+1,向左-1,最下面是127和-128相邻。当你将一个大于127的正数转换时,可以理解成从零出发绕圈,最终结果就是停留的格子。

为了验证上述结论,我们可以看下面的这段简单地代码:

// An highlighted block
#include<stdio.h>
int main()
{int x=312;char y=(char)x;printf("%d",y);
}

结果图片:

我们可以看到,原来x的值是312,在强制转换赋给y后,变成了56(312-256).

这是我对类型转换的一点小理解,如果有不当的地方,请在评论区留言。
PS:如果有大佬知道int型怎么向char型不流失数据转换的话,请务必将方法拍在我的脸上(狗头保命)

C语言:int型数据向char型数据的强制类型转换原理相关推荐

  1. c语言int型变量写入char数组的方法

    c语言int型变量写入char数组的方法 #include<stdio.h>int main() {int iMum = 1000000;int iReNum = 0;char cArra ...

  2. C语言的变量类型(int、short、char、float...)及变量类型转换详解

    前言 单片机的基本功能是进行数据处理,而数据在进行处理时需要先存放到单片机的存储器中.所以在编写程序时对变量与常量都要先声明数据类型,以便把不同的数据类型定位到嵌入式处理器的不同存储区中. 具有一定格 ...

  3. c语言字符型数据是,C语言字符型数据.doc

    C语言字符型数据 2.5.1字符常量字符常量是指用一对单引号括起来的一个字符.如'a','9','!'.字符常量中的单引号只起定界作用并不表示字符本身.单引号中的字符不能是单引号(')和反斜杠(\), ...

  4. c语言中字符加上48是,【2017年整理】C语言字符型数据(4、5).doc

    [2017年整理]C语言字符型数据(4.5) 2.5.1字符常量字符常量是指用一对单引号括起来的一个字符.如'a','9','!'.字符常量中的单引号只起定界作用并不表示字符本身.单引号中的字符不能是 ...

  5. C语言中字符串数据转为整型数据并提取整型数据

    方法一:利用库中的atoi函数,将字符类型转换为整型,则可提取出整型. #include<stdio.h> #include<string.h> int main() {cha ...

  6. Java语言int型与byte型数组的转换

    为了在接下来的篇章中讲解用Java实现文件的归档和解归档,需要先了解一下Java中int型与byte型数组之间的相互转换. 首先,我们先来看看int型转换成byte型数组. 我们知道,Java中,一个 ...

  7. 计算机编程c 语言实型数据,C语言-基础教程-C语言实型数据

    C语言-基础教程-C语言实型数据 分类:计算机等级 | 更新时间:2016-07-08| 来源:转载 2.4.1 实型常量 实型常量又称浮点常量,是一个十进制表示的符号实数.符号实数的值包括整数部分. ...

  8. c语言的字符数据与整型数据可以互相赋值,2012年计算机二级C语言字符型数据考点归纳...

    第6章 字符型数据考点归纳 6.1 字符常量 有两种形式:一是用单引号括起来的一个单字符,如′a′,′?′,′=′:二是″转义字符″,即以″\″开头的字符序列.常用的转义字符见下表. 字符形式 功 能 ...

  9. C 语言 int 型乘法溢出问题

    2019独角兽企业重金招聘Python工程师标准>>> long l; int a, b; l = a*b; 因为 a*b 的结果仍然以 int 型保存, 所以即使 l 为long, ...

最新文章

  1. RecyclerView的滚动事件OnScrollListener研究
  2. 【异或交换原理】按位进行异或操作,实现数的交换
  3. Nuget 多平台多目标快速自动打包
  4. Leetcode题库 125.验证回文串(双指针 C实现)
  5. php system()和exec()差别
  6. 【leetcode】910. Smallest Range II
  7. PHPCMS V9爆出多个SQL注入漏洞
  8. 别翻了,常见的锁策略就在这里了~
  9. python的collections模块的学习
  10. camshift实现目标跟踪
  11. php ajax 同时验证 用户名 密码
  12. 微博三方登陆-02.微博开放平台注册及使用
  13. android猴子测试,听话的“猴子”安卓app压力测试
  14. 安装Centos8设置基础软件仓库时出错
  15. 牛客网——B 遥远的记忆
  16. MFC窗体的扩展样式和其值
  17. 英语词性-句子成分-构词法
  18. rabbitmq——交换机fanout和direct
  19. Unity 《愤怒的小鸟》涉及的主要知识
  20. 30款后台源码。是我见过最全的后台代码。。

热门文章

  1. Java实现树状结构解析
  2. Uniforms(uniform变量)
  3. 变量被重复定义的问题
  4. 如何学习vc++(vc的用处)
  5. java web 开发——第一章jsp简介
  6. tms web core 与 kbmmw 第一次亲密接触
  7. Nodejs正则表达式
  8. 性能提升30倍丨基于 DolphinDB 的 mytt 指标库实现
  9. AWS KVS(Kinesis Video Streams)之WebRTC集成过程(六)
  10. 【Web】分页简单实现