int型和char型之间的类型转换
目前绝大多数编译器,int 型数据占 4 字节, char 型占 1 字节。进行不同数据的强制转换其实就是数据占用字节扩充或者截断。
比如
int a;
char b;
a=(int)b;
b=(char)a;
由 b 转换成 int 型数据就是将 b 扩充 3 个字节;而将 a 转换成 char 型数据就是将 a 的最低位字节截取出来。因此,将数据由值域较宽类型强制转换到值域较窄类型时,有可能出现数据信息丢失。
char 型数据在机器里通过 ASCII 码存储,也就是用一个整数存储的。譬如字符 ’ 0 ‘,对应的 ASCII 码的十进制数 是 48,因此强制转换成 int 后,是 48,而不是 0 .
字符’ ‘(空格)的ASCII码为32.
字符’A’的ASCII码为65,然后是’B’ ‘C’ … ‘Z’
字符’a’的ASCII码为97,然后是’b’ ‘c’ … ‘z’
字符’0’的ASCII码为48,然后是’1’ ‘2’ ‘3’ … ‘9’
所以,要想把一个数字字符ch,转为一个整数,就是ch-‘0’当然ch-48也行
例如把’3’转换为3,就是’3’-‘0’
因为C和C++中,字符和整型是一样的,可以隐式转换。
int a=257 char b=127 b=a 打印结果为什么是b=1?
原因是一个整数占4个字节,一个char只占一个字节,当int转char时,会选择int的最低位开始截取一个字节来付给char,而现在257在内存中为10000000 00000000 00000001 00000001把最后的00000001付给了char所以就是1。
1字节(Byte) = 8二进制位=8bits
字节(Byte)是通过网络传输信息(或在硬盘或内存中存储信息)的单位。
字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。
在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
英文标点占一个字节,中文标点占两个字节。
例子:
int a=0x111191191;char b;b=a;
则b的值为多少?
程序:
#include<stdio.h>int main(){int a=0x111191191;char b;b=a;printf("%x\n",b);return 0;}
结果:
ffffff91
将程序修改为:
#include<stdio.h>intmain(){int a=0x111191191;unsigned char b;b=a;printf("%x\n",b);return 0;}
结果:
91
上边两例都是从大的向小的的转型,则利用字节截断。小的向大的呢?与上边类似,再举一例。
程序:
#include<stdio.h>intmain(){int a;char b=0x91;a=b;printf("%x\n",a);return 0;}
结果:
ffffff91
这种问题分析的关键是:
1、这种数据的有效位是多少位?
2、等号左边的数值只会在等号右边的数值中取自己的有效位数(char就只取右边数据的低八位)。
int型和char型之间的类型转换相关推荐
- c语言怎么让写的函数兼容int型和char型_既然C语言void指针是“万能指针”,那么malloc还需类型转换吗?...
在C语言程序开发中,动态内存分配是不可避免的,而调用 malloc()/free() 库函数实现这一过程是方便的,事实上,在很多C语言程序中,malloc/free 库函数的使用相当频繁,它俩的C语言 ...
- c语言int的存储形式,C语言变量的存储类型有3种,即int型、float型和char型
摘要: 语言变有半裙大头针别样时采用的是大约( )度斜向下别针法.使用椭圆工具拖出正圆形时,存储需要按住的快捷键是在下面的文件格式中,型f型和型常用于网页中的图像制作的是... 语言变有半裙大头针别样 ...
- C++中int型和string型的相互转换
一.int型转string型 1.to_string函数,头文件#include<string> c++11标准增加了全局函数std::to_string: string to_strin ...
- c++ char[]与int之间的类型转换
char数组转int,int转char数组. #include <cstdio> #include <iostream> #include <stdlib.h> u ...
- java中int与char之间的互相转化
引言 在介绍java中int与char之间的互相转化之前,让我们先简单的回顾一些会涉及到的知识. 数据类型 在介绍int与char的转换之前,我们先来回顾一下java中的基本数据类型: 类型 大小 包 ...
- java 把char转换成int型,java如何把char型数据转换成int型数据(转)
一字符串,String="2324234535": 把第i个数取出来时是char型的:char temp=String.charAt(i) 如何把char型转换成int型? 我需要 ...
- VC之CString,wchar_t,int,string,char*之间的转换
VC之CString,wchar_t,int,string,char*之间的转换 1. CString 转 wchar_t CString path = "asdf"; wchar ...
- CString,int,string,char*之间的转换
<C++标准函数库>中说的 有三个函数可以将字符串的内容转换为字符数组和C-string 1.data(),返回没有"\0"的字符串数组 2,c_str() ...
- cstring转为string vc_VC之CString,wchar_t,int,string,char*之间的转换-阿里云开发者社区
VC之CString,wchar_t,int,string,char*之间的转换 1. CString 转 wchar_t CString path = "asdf"; wchar ...
最新文章
- node mongoose_如何使用Express,Mongoose和Socket.io在Node.js中构建实时聊天应用程序
- 现场丨2017中国计算机大会(CNCC2017)之沈向洋演讲:自然语言中的描述、对话和隐喻
- iOS开发拓展篇—CoreLocation简单介绍
- 微信小游戏 Egret开发数据域官方Demo下载地址
- 时空上下文视觉跟踪(STC)算法的解读与代码复现
- 华为交换机重制_华为交换机重置命令
- 2014年12月21号面试
- linux如何查看tomcat端口号,如何在Linux中修改tomcat端口号
- ubuntu cmakelists 配置海康 SDK
- 辨别 优盘 真假 [金士顿]
- 【微信小程序怎么开店铺】微信小程序店铺怎么制作?
- 机器学习 | MATLAB实现GLM广义线性模型参数设定
- Safari Web Extension 开发(1)
- 450套大屏模板整理
- 关于无线网卡驱动更新后无法使用(错误代码43)的问题
- html粘性菜单,导航菜单:jQuery粘性滚动导航栏效果
- 02 Redis6-配置文件
- 内存,外存,运存,显存,闪存,硬盘,SSD等概念
- 编程大法—炼体筑基—计算机组成原理
- GO WEB IRIS入门 安装iris