数据类型:
基本数据类型:整形、浮点型、字符型、枚举类型
1、字符类型:(char)包含256个不同的整数,每个整数可以用来代表一个字符。ASCII码表
1)'a' 97 'A' 68 '0' 48
2)'d' - 'a' == 3 - 0;
3)字符类型里的所有字符被分成两组,每组128个。一组所有计算机都相同为0~127,另一组肯能从-128~-1也可能128~255。
4)特殊字符
\n 回车换行
\r 回车不换行字符
\\' 单引号'
\\" 双引号"
\\\ 反斜杠\
2、整形:unsigned无符号和signed有符号(所包含的个数是一样)
1)short短整型,包含65536数字
2)long长整型,包含2的32次方个数字
3)int整形,
我们的计算机上整数类型和长整数类型完全一样。
程序中整形数字后加u表示数字的类型为无符号整数类型(不加默认是有符号)。
3、浮点类型:
1)float单精度浮点类型
2)double双精度浮点类型
程序中小数后加f就表示这个数字为单精度浮点类型(不加默认是双精度)
4、布尔类型:C99中引入
5、复合数据类型:
有一些基本数据类型复合而成的数据类型,如String、数组等。复合数据类型必须先创建才能使用。
6、占位符
char、unsigned char %c
short %hd
unsigned short %hu
long %ld
unsigned long %lu
int %d
unsigned int %ud
float %f或%g %.2f
double %lf或%lg (%g不会显示小数点末尾的0)
7、sizeof
不同数据类型的一个重要区别就是不同类型存储区包含的字节个数不同。
sizeof(a); sizeof(int); sizeof(4);
sizeof(a = 10); //sizeof小括号里对任何存储区内容的修改不会真正生效。
sizeof((3>2)?1:9.0); //8字节,因为sizeof里有两个int量的比较
构造类型:数组类型、字符串、结构体类型、共用体类型、
指针类型
空类型
自定义类型
数据类型转换
隐式类型转化:如果一个表达式里多个数字的类型不同就必须首先转换成一个类型然后才能计算。(由计算机完成)
隐式规则:
1、占存小的转化为占存大的。
2、整形–>浮点
3、有符号–>无符号
强制类型转换:可以给一个数字指定一个类型。强制类型转换有可能造成数据丢失。
类型转换不会修改现有存储区的内容,会分配一个新的临时存储区记录转换后的数字。
输入输出
scanf("%d", &a); //不要在双引号里写不是占位符的内容
scanf("%d%d",&a,&b); //输入多个数字
printf(“你输入的数是%d”, a);
进制转换
一个字节(存储单元)可以分成8段。1B(Byte 字节) = 8bit = 0xFF; 1kB = 1024B;
二进制、十进制、八进制、十六进制:
1、二进制->十进制: 0010 1100 = 32 + 8 + 4 = 44;
2、十进制->二进制:
3、二进制负数->十进制:
011110 --取反加1-> 100010 --转十进制-> 34 --符号-> -34
4、十进制负数->二进制:
-34 —> 34 --转二进制-> 100010 --取反加1-> 011110
符号位:有符号类型数字最左边的二进制数位。
符号位是0为正数,符号位是1为负数
原码、反码、补码
原码:+5 = 0000 0101
反码:-5 = 1111 1010
补码:-5 = 1111 1011 = 反码+1