char、signed char和unsigned char

简介: char、signed char和unsigned char

前言:

1.整数在内存中以二进制补码的形式存放

2.打印时打印的是原码

3.整形提升:当数据类型为char、signed char、unsigned char、short、signed short、unsigened short时,它们在内存所占中的数据类型长度<4字节,在进行计算或打印时,会发生整形提升,即前面补符号位

(1)正整数发生整形提升时,前面会补0

(2)负整数发生整形提升时,前面会补1

举例如下:

1.     char a = -1;
2.  //10000000 00000000 00000000 00000001 原码
3.  //11111111 11111111 11111111 11111110 反码(取反)
4.  //11111111 11111111 11111111 11111111 补码(+1)
5.  //char类型截断,取一个字节
6.  //11111111
7.  //打印:整形提升(因为是负数,所以前面补1)后是补码,再求原码(-1,取反)
8.  //11111111 11111111 11111111 11111111补码
9.  //11111111 11111111 11111111 11111110反码(-1)
10.   //10000000 00000000 00000000 00000001原码(取反)
11.   //-1
12. 
13. 
14.   signed char b = -1;
15.   //有符号数,同a
16.   //-1
17. 
18. 
19.   unsigned char c = -1;
20.   //10000000 00000000 00000000 00000001原码
21.   //01111111 11111111 11111111 11111110反码(取反)
22.   //01111111 11111111 11111111 11111111补码(+1)
23.   //char类型截断,取一个字节
24.   //11111111
25.   //打印:整形提升(因为是无符号数,所以前面补0)后是补码,再求原码(原码同补码)
26.   //00000000 00000000 00000000 11111111补码
27.   //原码同补码
28.   //255
29. 
30.   printf(" a = %d,b = %d,c =%d", a, b, c);
31.   //a = -1 b = -1 c = 255


相关文章
|
7月前
|
存储 人工智能 编译器
learn_C_deep_5 (温故知新、sigend char a = -128的深度理解、unsigned int类型的写法规范)
learn_C_deep_5 (温故知新、sigend char a = -128的深度理解、unsigned int类型的写法规范)
|
存储 小程序 程序员
8k字详解整型(int)/字符型(char)/浮点型(float)/有符号(signed)/无符号(unsigned)数据在内存中的存储【程序员内功修炼/C语言】
8k字详解整型(int)/字符型(char)/浮点型(float)/有符号(signed)/无符号(unsigned)数据在内存中的存储【程序员内功修炼/C语言】
189 0
|
存储 C语言
C语言:char与unsigned char类型数据的范围
unsigned char 的范围是 0~255,当 i=255 时,i++变为0,从0到255无限循环,因此程序运行结果为死循环
386 0
|
存储 人工智能
unsigned/signed int/char类型表示的数值范围
一个32位的signed int类型整数表示的范围:-2^31~2^31-1 一个32位的unsigned int类型整数表示的范围: 0~2^32-1   一个8位的signed char类型整数表示的范围:-2^7~2^7-1 一个8位的unsigned char类型整数表示的范围: 0...
1740 0
|
C# 数据安全/隐私保护
c# 获取串口设备的输入(unsigned char *和 char*)
因为是C#,所以平台肯定是.NET了。 之前因为一个小小的业务需要接触了下密码键盘的操作。其实就是简单的获取用户输入密码的操作,没碰到什么大的问题,但是查资料的过程中还是感觉查到的东西挺多的,是那种越查越多,但是又不是很关键的东西。
1433 0
|
存储 关系型数据库 MySQL
面试时被这样一个问:”存储MD5值应该用VARCHAR还是用CHAR?
一个5年工作经验的小伙伴,在面试的时候被这样一个问题。说”存储MD5值应该用VARCHAR还是用CHAR“,他一时间不只如何选择,感觉用VARCHAR也可以,用CHAR也行。希望我来帮忙分析一下。
122 0
|
4月前
|
存储 数据管理 数据库
|
7月前
|
存储 关系型数据库 MySQL
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
本篇文章来讨论MySQL字段的字符类型选择并深入实践char与varchar类型的区别以及在千万数据下的性能测试
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀