C语言char类型及其类型转换的变化
目录:
char类型
转义字符
char类型
首先我们要知道char类型为一个字节。 而且要知道他在计算机中的储存方式。 一个字节8个bite,int类型32bite,0x00 00 00 01刚好没量为数为一个字节,这正是内存的储存方式 例如
char a=5;//a=0000 0101 正数的源码补码反码相同
char b=-5;// b=1000 0101(源码)-》1111 1011(补码)
int x=(int)a;//x=00 00 00 05(16进制),在这里涉及类型变换时的扩充,当正数扩充时需要在他前面补0
int y=(int)b;//y=ff ff ff fb,负数的扩充则需要在他前面补f
同理类型转换时有扩充自然也会有缩减,缩减时,只需将多出来的位数删去就好。
现在我们来看例题
char ch=130;
print("%d",ch);//会输出-126,这是应为有符号char的范围是127到-128
//ch的值超过127时就会自动转换为补码形式,且该值作为补码存放
//130=1000 0010(补)单从补码来看这是一个负数
//那么他的原码就是1111 1110(-126)
在例如
char a=100;//a=0110 0100(原,补)
char b=200;//b=1100 1000(补,因为超过127所以直接作为补码处理)
char c=a+b;//a+b时会扩充为int类型处理再相加,然后在缩减为char类型
printf("%d,%d",c,a+b);
这个结果不是说明他们两个的值一定相同,这只是在当前的赋值情况下会出现一样的结果,实际情况需要计算。
下面来解释说明
要算a+b所以
a转换为int的结果为
a=0000 0000 0000 0000 0000 0000 0110 0100
b=1111 1111 1111 1111 1111 1111 1100 1000
a+b=1 0000 0000 0000 0000 0000 0000 0010 1100
注意最前面那个1不是符号位,那只是溢出的一位数,真正的符号为还是第二个0,所以就a+b的int类型结果来说总的结果为44,同时缩减后变为char类型的结果是0010 1100=44.
所以两份结果是这么得出的。
接着再来看一个例题
先告诉你unsigned char范围为0-255
unsigned char x=100;
unsigned char y=200;
unsigned char z=x+y;
printf("%d,%d",z,x+y);
x=0110 0100
y=1100 1000
x+y=
0000 0000 0000 0000 0000 0000 0110 0100
0000 0000 0000 0000 0000 0000 1100 1000
0000 0000 0000 0000 0000 0001 0010 1100
x+y(的int类型结果为300)
当转换为char类型的char时就将前3个字节个去掉了所以剩下了44
关于转义字符的内容
void main()
{//char a = '\'',b='\\',c='\r';// \是转义符//cout << a << endl;//cout << b<< endl;//cout << c << endl;//int x = 'avb';//int y = 'a';//int z = 'v';//int f = 'b';//int h = y*z*f;
}
char a = ‘’’,b=’\’,c=’\r’; \是转义符
通过转义符可以得到某些特殊的字符的本身
如果只是简单赋值如:char ch=‘’‘;想得到一个单引号字符,这样的操作是无法通过编译的。
例如我们想要在字符串中输入一个特殊的名字如:“c++“hm”
如果简单的写为:char str[30]={" llj “c++ "hm "};
这样是无法得到正确的答案的
我们需要使用转义符
char str[30]={" llj \“c++ \"hm "}
这样使用转义符,就可以把某些界限符的意义转为其他含义,如’ ‘是字符的界限符,” “是字符串的界限符。
再举一个例子:int x='4';
那么x的值为字符4对应的ascii值
但是如果写为 int x=’\4’;那么x的值就为4。
int x="\1\2\3\4\5\6\7"[2];
上面x的值为3;
首先整个字符串通过转义变为了“1234567”这样七个字符,而后面的[2]则是代表着下标访问第二个数据,所以得到的刚好是第三个字符3;之所以能访问是因为,在这个字符串中\1\2\3等每个数都为一个字节,那么下标2,相当于第三个数,也就是第三个字节的内容。
关于转义符的其他用法:
特殊的两种转义形式:
\ddd 三位八进制
\xhh 二位十六进制
char *str="dawf\205dfd";
int len=strlen(str);
prinf("%d",len)
len的答案是8,在这\205是一个8进制的数,只有这个数转化为十进制后的数不大于255,那么就可以转义为对应8进制值的ascii字符。
char *str="dawf\x20dfd";
这时\x20是一个16进制20的一个数,这是转义的另一种形式,对应不同的操作符,会有不同的效果,只要它对应的10进制数没有超过255,那么就可以转义为对应的ascii字符
C语言char类型及其类型转换的变化相关推荐
- char在python中什么意思_C语言-char 类型基本概念
char类型的变量在内存中是如何存储的呢? char 是占一个字节的 int num; char charValue; printf("num 的内存地址%p\n",&nu ...
- c语言char类型溢出,C语言中数据溢出的问题---以char类型为例
一.首先char类型的取值范围是-128~127,对于127的二进制表示是:01111111,-127的二进制表示是:11111111,那么问题来了:-128是怎么来的?1.当charch=128或c ...
- C语言char类型的存储
目录 char是如何存储的 char的类型 char的取值范围 例题 char是如何存储的 字符型(char)用于储存字符(character),如英文字母或标点.但是char类型在内存中并不是以字符 ...
- C语言 —— char类型字母大小写转换
char类型的使用 一.字符型:char 二.ASCII表 三.例题:字母大小写转换 一.字符型:char # include <stdio.h> int main (void) {cha ...
- C 语言char类型与int类型的转化
目录 一.char转int 法一:直接转换 ASSCII编码表 ASCII可显示字符 法二:利用库函数转换 二.数字换成字符串 1.用sprintf 2.用库函数 char和int的转换有两种方式,这 ...
- c语言 char类型(二维数组篇)
例子:char str[3][5] 定义一个字符类型的数组, 有3个字符串 字符串最大长度为5
- char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...
21ic综合自网络信息 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识.所以本文尽可能的通过一篇文章完全讲解指针. 为什么 ...
- char类型怎么输入 c语言_C语言零基础入门到精通视频课程(精品)
C语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...
- java数据类型(整型、浮点型、char类型、boolean型、类型转换)
文章目录 0.思维导图总览 1.整型 2.浮点型 3.char型 4.boolean型 5.java内置常量对应数据类型的取值范围 6.数据类型默认值 7.数值类型之间的转换 (1)定义数据类型后自动 ...
最新文章
- git 修改仓库的描述_git简介、基本命令和仓库操作
- oracle报错ora-12162,ORA-12162: TNS: 指定的 Net 服务名不正确
- Python中的模块和包:模块的(动态)导入、__future__模块使用
- Linux进程+进程间通信IPC
- ASP.NET Core快速入门(第3章:依赖注入)--学习笔记
- mysql自增id获取失败
- 【转】Postman 生成接口文档
- MongoDB中的变更通知
- Linux学习笔记---更新软件源
- 单片机lcm显示字符程序C语言,手把手教你学单片机的C语言程序设计(十六).pdf...
- VISIO2003基本形状
- c++ 11/14新特性
- wps/word中怎么插入各种水平分隔线
- 联想小新锁屏壁纸怎么换_如何设置联想小新电脑锁屏时间
- Nginx 重定向 80 到443
- 两款开关电源的纹波对比
- 天冷服务器自动关机,天冷iphone自动关机怎么办 天冷iphone自动关机解决办法【详解】...
- 人人都能成为闪电网络节点:第1章安装系统
- epplus word html,.Net开源Excel、Word操作组件-NPOI、EPPlus、DocX
- 【沧海拾昧】微机原理:可编程中断控制器8259A芯片
热门文章
- Spring Boot 集成 ElasticSearch,实现高性能搜索
- 一、【手机摄影】基础知识储备
- 突击并发编程JUC系列-ReentrantReadWriteLock
- JAVA之JUC系列 - JAVA内存模型
- python图像分类整理_python常见图形代码可视化大全整理(包括动图)更新中...
- 3306. 有钱人买钻石
- 146条经典民间偏方验方(珍藏)
- 设计模式:一目了然的状态机图
- java获取f5服务器真实ip,F5服务器做负载均衡时WebService获取真实客户端IP地址
- led背光是未来LCD背光技术的发展方向