1、数据类型的定义

变量的定义: 数据类型 变量名【标识符】  变量的赋值: 变量名 = 值; 数据类型 变量名【标识符】 = 值   标示符的命名规则: 1、字母、数字、下划线 2、不能以数字开头 3、见名知义 4、不能和同一函数内的其他标示符重复 5、不能使用C语言关键字 6、区分大小写   标示符: ABC abc —abc _abc. 123_bac a_b_123   常量的定义: 1、const 数据类型 常量名 2、【宏定义】#deifne 常量名 值 注意: 1、通过#define 定义的常量 是根据值来匹配数据类型的 2、const 修饰的常量是不安全 可以通过指针来修改     2、进制: 二进制:      二进制逢二进一,所有的数组是0、1组成 十进制转二进制: 除二反序取余法:将十进制数每次除以2 取出余数 按照结果倒叙依次获取结果 二进制转十进制: 权值法:将二进制数各个位数从0位开始乘以2的N幂 将各个位数的结果相加 八进制:      八进制逢八进一,所有的数组是0到7组成 十进制转八进制: 除八反序取余法:将十进制数每次除以8 取出余数 按照结果倒叙依次获取结果   十六进制:      十六进制逢十六进一,所有的数组是0到9和A到F组成 字母不区分大小写 十进制转八进制: 除十六反序取余法:将十进制数每次除以16 取出余数 按照结果倒叙依次获取结果   8421法则: 将各个位数的二进制用十进制中的【数字 】来表示多位的二进制数 通过【数字 】相加就可以得到二进制数的数据 8 1000 4 100 2 10 1 1 1000   100     10       1 ———— 1 1 1 1   进制在程序中打印: int a=10;//十进制中的10 int b=010;//八进制中的10 在程序中定义一个八进制数需要在数前面加上0区分 int c=0x10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0x区分 int d=0X10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0X区分 注意:在程序中没有办法表示一个二进制数 %d 将数据按照十进制输出 %o将数据按照八进制输出 %x将数据按照十六进制小写输出 %X将数据按照十六进制大写输出   3、原码、反码、补码 一个有符号的整型数据可以分为两部分一部分是符号位、一部分是数字位 无符号数据类型只包含数字位部分 signed int a= 1986(有符号标识 signed可以不用写)  二进制:11111000010   1986原码:0000 0000 0000 0000 0000 0111 1100 0010 -1986原码:1000 0000 0000 0000 0000 0111 1100 0010   1986反码: 0000 0000 0000 0000 0000 0111 1100 0010 -1986反码:1111 1111 1111 1111 1111 1000 0011 1101   1986补码: 0000 0000 0000 0000 0000 0111 1100 0010 -1986反码:1111 1111 1111 1111 1111 1000 0011 1110                  1 0000 0000 0000 0000 0000 0000 0000 0000 溢出:在数据进行操作的时候会导致超出数据类型大小,会向前位进1,多于原始数据类型大小,会被系统自动舍弃 保留从后面开始数据类型大小的位数       10+20 0000 1010 0001 0100 0001 1110 -10+-20 原码:1000 1010 反码:1111 0101 补码:1111 0110   原码:1001 0100 反码:1110 1011 补码:1110 1100      1111 0110      1110 1100 补码:1110  0010 反码:1110 0001 原码:1001 1110 16+8+4+2=-30   练习:用生辰年份年去生辰日期 1992 -326 1、将10进制转化为二进制      1992 :0000 0000 0000 0000 0000 0111 1100 1000      -326 :0000 0000 0000 0000 0000 0001 0100 0110 2、加符号位将数据变为原码      1992 :0000 0000 0000 0000 0000 0111 1100 1000      -326 :1000 0000 0000 0000 0000 0001 0100 0110 3、转化为反码      1992 :0000 0000 0000 0000 0000 0111 1100 1000      -326 :1111  1111 1111 1111 1111 1110 1011 1001 4、将反码+1转化为补码      1992 :0000 0000 0000 0000 0000 0111 1100 1000      -326 :1111  1111 1111 1111 1111 1110 1011 1010 5、计算补码      1992 :0000 0000 0000 0000 0000 0111 1100 1000      -326 :1111  1111 1111 1111 1111 1110 1011 1010      结果  :  1 0000 0000 0000 0000 0000 0110 1000 0010 6、将数据转化为10进制 110 1000 0010 2+128+512+1024 = 1666 无符号: unsigned int a= 1986 无符号:1111  1111 1111  1111 1111  1111 1111  1111 =               0000 0000 0000 0000 0000 0000 0000 0000 =0 无符号整型取值:0-4294967295(2^32-1) 无符号的字符型:0-255 有符号:      int a= 1986      0111  1111 1111  1111 1111  1111 1111  1111 = 2147483647      0000 0000 0000 0000 0000 0000 0000 0001 原码: 1111  1111 1111  1111 1111  1111 1111  1111 = - 2147483647 反码:1000 0000 0000 0000 0000 0000 0000 0000 补码:1000 0000 0000 0000 0000 0000 0000 0001= - 2147483647 -0的补码 补码:1000 0000 0000 0000 0000 0000 0000 0000=-0 = - 2147483648       4、sizeof() 求出数据类型在内存中占的大小(BYTE) int value  =sizeof(变量名); int value = sizeof(数据类型) sizeof 数据类型 注意:根据32位操作系统获取的数据类型大小 char(字符型)【1】<short(短整型)【2】 <=int(整型)【4】|float (单精度浮点型)【4】|long(长整型)【4】 <long long(长长整型)【8】|double(双精度浮点型)【8】   输出和输入: 输出字符的两种方式: 1、printf("%c",变量) 2、putchar(字符) 输入字符的两种方式: 1、scanf("%c",&b变量) 2、变量=getchar()     char 1B=8bit 0x7f 0111 1111 0000 0010 1000 0001 1000 0000 1111 1111 -127 0xff  1111 1111 0000 0001 1 0000 0000   5、数据类型: 字符型: char 用于存储一个单一的字符 在格式化输入printf("%c",变量)通过占位符%c来接收的 每一个char类型都对应在ASCII中有具体的值 例如:数字【0】对应的ASCII值为48 字母【A】对应的ASCII值为65 字母【a】对应的ASCII值为97 转义字符: 计算机会使用一些字符来完成程序设计,如果在编程中想使用这些字符的本意,需要通过【\】来转义 注意:想在控制台中输出%  需要使用【%%】     浮点型: float 用于存储带有小数的数据 在格式化输入printf("%f",变量)通过占位符%f来接收的   double 用于存储带有小数的数据 数据长度比float更长 注意:因为将小数转化为二进制时不是一个精确的值,所以浮点型都会有数据偏差
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄