变量的概念
内存的承载方式:以低电平的形式代表二进制数快速闪烁,以此代表二进制数
每一个字节(Byte,8位bit)有一个十六进制的地址
变量即是一个地址的别名
字符串内的格式占位符:%d
“\033[11D"光标向左偏移11个单位
“\033[nC"光标向右偏移n个单位
“\033[nA” 上
“\033[nB” 下
终端上的数据输入到内存scanf(”%d”,&变量(地址))
scanf先从缓存区读取相应通配符的数据,若缓存区为空则等待用户输入数据
清除scanf缓存语句while(getchar()!=’\n’);
数据类型
1.整型:
普通整型:int, %d,4Byte,最高位为符号位0为正,1为-
短整型:short,%d,2Byte
长整型:long,%ld,8Byte
二进制数零法:10000000,后面有7个0,值为2**7=128
计算机中所有的数据以二进制的补码形式存在(遇到1开头的二进制数要表示成十进制数需转换成补码再翻译成十进制数,特例:1000 0000(补)翻译成十进制数是-128):
源码:通过二进制直接转换出来的数
反码:符号位不变,其它位转换(正数的反码是本身,负数的反码是符号位不变,其余取反)
补码:正数即源码,负数在反码的基础上加1
当一个数大于数据范围的时候就会从最小值开始取值,反过来同理:
一个字节的存储范围是-128(1000 0000补码表示-128,而源码1000 0000 是0)~127
对于一个大于127的数number,公式:number-128±128即number-256
unsigned 500=244(unsigned取值范围是0~255)
-1+1
1000 0001 + 0000 0001->1111 1110 + 0000 0001->1111 1111 + 0000 0001=0000 0000
1111 1111->1000 0000->1000 0001->-1
10+6:0000 1010 + 0000 0110 =0001 0000=16
10-6: 0000 1010 + 1000 0110->0000 1010 + 1111 1001->0000 1010 + 1111 1010=0000 0100=4
6-10: 0000 0110 + 1000 1010->0000 0110 + 1111 0101->0000 0110 + 1111 0110=1111 1100->1000 0011->1000 0100=-4
加减运算用过补码进行加减运算,结果若为负数的话取补码表示为十进制数
2.字符型:
用char来声明数据,在内存中占据1个字节,使用%c进行格式占位,在printf中也可用%d进行格式占位(scanf中只能用%c,printf中可以用%d和%c占位)。
在用printf("%d")打印出来的是字符的ASCII码,printf("%c")打印的是字符本体
在C语言中三种进制:
十进制
十六进制:0x开头
八进制:0开头 09语法高亮错误
3.浮点型:
单精度浮点型:float声明,%f格式占位,4字节----最高位是符号位,2到9位整数,10到32位为小数点后的数
双精度浮点型:double,%lf格式占位,8字节----最高位是符号位,2到13位整数,14到64位为小数位
浮点型数据比较大小时一定要明确精度范围;
浮点型数据不参与位运算;
在printf中浮点型数据有许多其他的格式占位方式:double
①:%.nlf精确到小数点后n位
②:%g,取小数点后的有效位(把多余的0去掉)
4.空类型:用void表示,不能用来声明变量,可以用来表示某些没有结果的操作
5.地址类型:’&’,用%p进行格式占位,接收一个十六进制地址数据的数据类型是指针,64bit系统中指针的大小为8个字节。32bit位系统中,所有指针占4字节。16位占2字节
6.自定义数据类型:说到底也是由已知的数据类型拼凑成一个数据类型
2114

被折叠的 条评论
为什么被折叠?



