第四天笔记
1 导入标准输入输出库 2 #include<stdio.h> //头文件 std标准库 i/o输入输出库 3 4 5 6 进制在程序中打印: 7 int a =10; //十进制中的10 8 int b=010;//八进制中的10 在程序中定义一个八进制书需要在数前面加上0区分 9 int c=0x10;十六进制中的10 在程序中定义一个十六进制书需要在数前面加上0x区分 10 int d=0X10;十六进制中10 大写的 在程序中定义一个十六进制书需要在数前面加上0X区分 11 注意:在程序中没有办法表示一个二进制数 12 %d将数据按照十进制输出 13 %o将数据按照八进制输出 14 %x将数据按照十六小写x进制输出 15 %X将数据按照十六大写X进制输出 16 17 4、sizeof() 18 求出数据类型在内存中占得大小(BYTE) 19 int value =sizeof(变量名): 20 int value = sizeof(数据类型)sizeof 数据类型 21 注意:根据32位系统获取的数据类型大小 22 char(字符型)【1】 23 <short(短整型)【2】 24 <= int (整型)【4】 25 | float(单精度浮点型)【4】 26 | long(长整型)【4】 27 <long long (常常整形)【8】 28 double(双精度浮点型)【8】 29 30 输出和输入 31 输出字符的两种方式 32 1、printf("%c",变量) 33 2、ptuchar(字符) 34 输入字符的两种方式 35 1、scanf("%c"&b变量) 36 2、变量=getchar(字符) 37 38 39 40 1、数据类型的定义 41 1、数据类型的定义 42 变量的定义: 43 数据类型 变量名【标识符】 44 变量的赋值: 45 变量名 = 值; 46 数据类型 变量名【标识符】 = 值 47 48 标示符的命名规则: 49 1、字母、数字、下划线 50 2、不能以数字开头 51 3、见名知义 52 4、不能和同一函数内的其他标示符重复 53 5、不能使用C语言关键字 54 6、区分大小写 55 56 标示符: 57 ABC 58 abc 59 —abc 60 _abc. 61 123_bac 62 a_b_123 63 64 常量的定义: 65 1、const 数据类型 常量名 66 2、【宏定义】#deifne 常量名 值 67 注意: 68 1、通过#define 定义的常量 是根据值来匹配数据类型的 69 2、const 修饰的常量是不安全 可以通过指针来修改 70 71 72 2、进制: 73 二进制: 74 二进制逢二进一,所有的数组是0、1组成 75 十进制转二进制: 76 除二反序取余法:将十进制数每次除以2 取出余数 按照结果倒叙依次获取结果 77 二进制转十进制: 78 权值法:将二进制数各个位数从0位开始乘以2的N幂 将各个位数的结果相加 79 八进制: 80 八进制逢八进一,所有的数组是0到7组成 81 十进制转八进制: 82 除八反序取余法:将十进制数每次除以8 取出余数 按照结果倒叙依次获取结果 83 84 十六进制: 85 十六进制逢十六进一,所有的数组是0到9和A到F组成 字母不区分大小写 86 十进制转八进制: 87 除十六反序取余法:将十进制数每次除以16 取出余数 按照结果倒叙依次获取结果 88 89 8421法则: 90 将各个位数的二进制用十进制中的【数字 】来表示多位的二进制数 通过【数字 】相加就可以得到二进制数的数据 91 8 1000 92 4 100 93 2 10 94 1 1 95 1000 96 100 97 10 98 1 99 ———— 100 1 1 1 1 101 102 进制在程序中打印: 103 int a=10;//十进制中的10 104 int b=010;//八进制中的10 在程序中定义一个八进制数需要在数前面加上0区分 105 int c=0x10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0x区分 106 int d=0X10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0X区分 107 注意:在程序中没有办法表示一个二进制数 108 %d 将数据按照十进制输出 109 %o将数据按照八进制输出 110 %x将数据按照十六进制小写输出 111 %X将数据按照十六进制大写输出 112 113 3、原码、反码、补码 114 一个有符号的整型数据可以分为两部分一部分是符号位、一部分是数字位 115 无符号数据类型只包含数字位部分 116 signed int a= 1986(有符号标识 signed可以不用写) 117 二进制:11111000010 118 119 1986原码:0000 0000 0000 0000 0000 0111 1100 0010 120 -1986原码:1000 0000 0000 0000 0000 0111 1100 0010 121 122 1986反码: 0000 0000 0000 0000 0000 0111 1100 0010 123 -1986反码:1111 1111 1111 1111 1111 1000 0011 1101 124 125 1986补码: 0000 0000 0000 0000 0000 0111 1100 0010 126 -1986反码:1111 1111 1111 1111 1111 1000 0011 1110 127 1 0000 0000 0000 0000 0000 0000 0000 0000 128 溢出:在数据进行操作的时候会导致超出数据类型大小,会向前位进1,多于原始数据类型大小,会被系统自动舍弃 保留从后面开始数据类型大小的位数 129 130 10+20 131 0000 1010 132 0001 0100 133 0001 1110 134 -10+-20 135 原码:1000 1010 136 反码:1111 0101 137 补码:1111 0110 138 139 原码:1001 0100 140 反码:1110 1011 141 补码:1110 1100 142 1111 0110 143 1110 1100 144 补码:1110 0010 145 反码:1110 0001 146 原码:1001 1110 16+8+4+2=-30 147 148 练习:用生辰年份年去生辰日期 149 1992 150 -326 151 1、将10进制转化为二进制 152 1992 :0000 0000 0000 0000 0000 0111 1100 1000 153 -326 :0000 0000 0000 0000 0000 0001 0100 0110 154 2、加符号位将数据变为原码 155 1992 :0000 0000 0000 0000 0000 0111 1100 1000 156 -326 :1000 0000 0000 0000 0000 0001 0100 0110 157 3、转化为反码 158 1992 :0000 0000 0000 0000 0000 0111 1100 1000 159 -326 :1111 1111 1111 1111 1111 1110 1011 1001 160 4、将反码+1转化为补码 161 1992 :0000 0000 0000 0000 0000 0111 1100 1000 162 -326 :1111 1111 1111 1111 1111 1110 1011 1010 163 5、计算补码 164 1992 :0000 0000 0000 0000 0000 0111 1100 1000 165 -326 :1111 1111 1111 1111 1111 1110 1011 1010 166 结果 : 1 0000 0000 0000 0000 0000 0110 1000 0010 167 6、将数据转化为10进制 168 110 1000 0010 169 2+128+512+1024 = 1666 170 无符号: 171 unsigned int a= 1986 172 无符号:1111 1111 1111 1111 1111 1111 1111 1111 = 173 0000 0000 0000 0000 0000 0000 0000 0000 =0 174 无符号整型取值:0-4294967295(2^32-1) 175 无符号的字符型:0-255 176 有符号: 177 int a= 1986 178 0111 1111 1111 1111 1111 1111 1111 1111 = 2147483647 179 0000 0000 0000 0000 0000 0000 0000 0001 180 原码: 1111 1111 1111 1111 1111 1111 1111 1111 = -2147483647 181 反码:1000 0000 0000 0000 0000 0000 0000 0000 182 补码:1000 0000 0000 0000 0000 0000 0000 0001=-2147483647 183 -0的补码 184 补码:1000 0000 0000 0000 0000 0000 0000 0000=-0 = -2147483648 185 186 187 188 4、sizeof() 189 求出数据类型在内存中占的大小(BYTE) 190 int value =sizeof(变量名); 191 int value = sizeof(数据类型) sizeof 数据类型 192 注意:根据32位操作系统获取的数据类型大小 193 char(字符型)【1】<short(短整型)【2】 194 <=int(整型)【4】|float (单精度浮点型)【4】|long(长整型)【4】 195 <long long(长长整型)【8】|double(双精度浮点型)【8】 196 197 输出和输入: 198 输出字符的两种方式: 199 1、printf("%c",变量) 200 2、putchar(字符) 201 输入字符的两种方式: 202 1、scanf("%c",&b变量) 203 2、变量=getchar() 204 205 206 char 1B=8bit 207 0x7f 208 0111 1111 209 0000 0010 210 1000 0001 211 1000 0000 212 1111 1111 -127 213 0xff 214 1111 1111 215 0000 0001 216 1 0000 0000 217 218 5、数据类型: 219 字符型: 220 char 用于存储一个单一的字符 221 在格式化输入printf("%c",变量)通过占位符%c来接收的 222 每一个char类型都对应在ASCII中有具体的值 223 例如:数字【0】对应的ASCII值为48 224 字母【A】对应的ASCII值为65 225 字母【a】对应的ASCII值为97 226 转义字符: 227 计算机会使用一些字符来完成程序设计,如果在编程中想使用这些字符的本意,需要通过【\】来转义 228 注意:想在控制台中输出% 需要使用【%%】 229 230 231 浮点型: 232 float 用于存储带有小数的数据 233 在格式化输入printf("%f",变量)通过占位符%f来接收的 234 235 double 用于存储带有小数的数据 数据长度比float更长 236 注意:因为将小数转化为二进制时不是一个精确的值,所以浮点型都会有数据偏差