目录:

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类型及其类型转换的变化相关推荐

  1. char在python中什么意思_C语言-char 类型基本概念

    char类型的变量在内存中是如何存储的呢? char 是占一个字节的 int num; char charValue; printf("num 的内存地址%p\n",&nu ...

  2. c语言char类型溢出,C语言中数据溢出的问题---以char类型为例

    一.首先char类型的取值范围是-128~127,对于127的二进制表示是:01111111,-127的二进制表示是:11111111,那么问题来了:-128是怎么来的?1.当charch=128或c ...

  3. C语言char类型的存储

    目录 char是如何存储的 char的类型 char的取值范围 例题 char是如何存储的 字符型(char)用于储存字符(character),如英文字母或标点.但是char类型在内存中并不是以字符 ...

  4. C语言 —— char类型字母大小写转换

    char类型的使用 一.字符型:char 二.ASCII表 三.例题:字母大小写转换 一.字符型:char # include <stdio.h> int main (void) {cha ...

  5. C 语言char类型与int类型的转化

    目录 一.char转int 法一:直接转换 ASSCII编码表 ASCII可显示字符 法二:利用库函数转换 二.数字换成字符串 1.用sprintf 2.用库函数 char和int的转换有两种方式,这 ...

  6. c语言 char类型(二维数组篇)

    例子:char str[3][5] 定义一个字符类型的数组, 有3个字符串 字符串最大长度为5

  7. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...

    21ic综合自网络信息 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识.所以本文尽可能的通过一篇文章完全讲解指针. 为什么 ...

  8. char类型怎么输入 c语言_C语言零基础入门到精通视频课程(精品)

    C语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

  9. java数据类型(整型、浮点型、char类型、boolean型、类型转换)

    文章目录 0.思维导图总览 1.整型 2.浮点型 3.char型 4.boolean型 5.java内置常量对应数据类型的取值范围 6.数据类型默认值 7.数值类型之间的转换 (1)定义数据类型后自动 ...

最新文章

  1. git 修改仓库的描述_git简介、基本命令和仓库操作
  2. oracle报错ora-12162,ORA-12162: TNS: 指定的 Net 服务名不正确
  3. Python中的模块和包:模块的(动态)导入、__future__模块使用
  4. Linux进程+进程间通信IPC
  5. ASP.NET Core快速入门(第3章:依赖注入)--学习笔记
  6. mysql自增id获取失败
  7. 【转】Postman 生成接口文档
  8. MongoDB中的变更通知
  9. Linux学习笔记---更新软件源
  10. 单片机lcm显示字符程序C语言,手把手教你学单片机的C语言程序设计(十六).pdf...
  11. VISIO2003基本形状
  12. c++ 11/14新特性
  13. wps/word中怎么插入各种水平分隔线
  14. 联想小新锁屏壁纸怎么换_如何设置联想小新电脑锁屏时间
  15. Nginx 重定向 80 到443
  16. 两款开关电源的纹波对比
  17. 天冷服务器自动关机,天冷iphone自动关机怎么办 天冷iphone自动关机解决办法【详解】...
  18. 人人都能成为闪电网络节点:第1章安装系统
  19. epplus word html,.Net开源Excel、Word操作组件-NPOI、EPPlus、DocX
  20. 【沧海拾昧】微机原理:可编程中断控制器8259A芯片

热门文章

  1. Spring Boot 集成 ElasticSearch,实现高性能搜索
  2. 一、【手机摄影】基础知识储备
  3. 突击并发编程JUC系列-ReentrantReadWriteLock
  4. JAVA之JUC系列 - JAVA内存模型
  5. python图像分类整理_python常见图形代码可视化大全整理(包括动图)更新中...
  6. 3306. 有钱人买钻石
  7. 146条经典民间偏方验方(珍藏)
  8. 设计模式:一目了然的状态机图
  9. java获取f5服务器真实ip,F5服务器做负载均衡时WebService获取真实客户端IP地址
  10. led背光是未来LCD背光技术的发展方向