按照数据在程序运行过程中是否能够被修改,将数据分为两大类:
常量数据类型:
在程序运行过程中,不能被修改的数据,称为常量数据,简称常量,常量可以直接在程序中使用的。
变量数据:
在程序运行过程中,可以被修改的数据,成为变量数据,简称变量,变量必须先定义,然后才能使用。
常量数据类型还分为:
1.整型常量
1.1 整型常量在程序中表示方式
整型常量:指的是整数,平时生活中或数学所说的整数都是十进制的整数。
十进制:每一位数字只能取0~9中的某一个值,大于9就要进位。例:123 456
八进制:每一位数字只能取0~7中的某一个值,大于7就要进位。例:012 045
十六进制:每一位数字只能取0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F中的某一个值,大于F就要进位。 例:0x12 0x79 0x4E
二进制:逢二进一
1.2 不同进制之间的转化
十进制转二进制:除2取余
二进制转十进制:二进制转为十进制要从右到左用二进制的每个数去乘以2的相应次方
八进制转二进制:八进制的一位是二进制的三位
十六进制转二进制:十六进制的一位是二进制的四位
2.浮点型常量
2.1 浮点表示
例如:3.14 2.57
2.2 e计数表示
例如:2.13e2 2.13E2 1.13e-3
3.字符型常量
在c语言中用' '作为字符常量的标志
'A' 'F' 'O' ----可见字符:当打印字符时,可以在屏幕上看到该字符
'\a' '\b' '\n' ----不可见字符:当打印字符时,在屏幕上看不到字符本身,属于功能性字符 在表示不可见字符时,可以使用字符的编码表示。
4.字符串型常量
在c语言中字符串用" "表示,例如:"abc" "hello"
5.符号常量
用#define定义的符号,可以用来表示一些常量
例如:#define PI 3.14 -----在程序中,可以使用PI表示3.14常量
变量数据分为:
1.整型常量
1.1 定义
int a;//定义一个变量a int a,b,c;//定义三个变量a,b,c
1.2 初始化 ---在定义的同时赋值
int a = 100;
1.3 赋值
value = 200;
a = val;
b = a + val;
c = a+b;
1.4 取值打印
printf("%d\n",value);
printf("%d\n",val);
printf("%d\n",a);
1.5 存储
整型数据在计算机内存中以二进制补码存储的。
对于正数:二进制补码是:将他直接转化为二进制就是补码
例如:34 ------ 00000000 00000000 00000000 00100010
对于负数:二进制补码是:负数对应的整数的二进制补码取反加1
例如:-17 ------ 11111111 11111111 11111111 11101111
先找到17的补码:00000000 00000000 00000000 00010001
2.浮点型变量
2.1 定义
float a;//定义一个变量a float a,b,c;//定义三个变量a,b,c
2.2 初始化 ---在定义的同时赋值
float a = 12.56;
2.3 赋值
value = 34.21;
a = val;
b = a + val;
c = a+b;
2.4 取值打印
printf("%f\n",value);
printf("%f\n",val);
printf("%f\n",a);
2.5 存储
浮点数存储,按符号位+指数位+小数位
3.字符型变量
3.1 定义
char a;//定义一个字符变量a char a,b,c;//定义三个字符变量a,b,c
3.2 初始化 ---在定义的同时赋值
char val = 'J';
3.3 赋值
value = 'K';
a = val;
b = a + val;
c = a+b;
3.4 取值打印
printf("%c\n",value);
printf("%c\n",val);
printf("%c\n",a);
3.5 存储
字符在计算机中以ASCII码的二进制形式存储
//注意:因为字符的编码范围是0~127,最大的字符编码在内存中只占7位,而char型一个字节8位,所以最高位会浪费
在c语言中为了不浪费空间,char通常可以当做一个字节长度的整型使用,当定义一个char的变量,里面既可以放字符,也可以放整数 比如: char a; a='Y'; a='123';
4.布尔型变量
布尔型表示真假 用关键字_Bool表示,如果用bool表示,则需要加头文件:#include<stdbool.h> 在计算机中 真----1 假----0
数据类型转换
在编程时,有时候不同类型的数据可能会在一起运算,这时,c语言需要把不同类型先转换为相同类型,然后再运算。
类型转换分为:隐式类型转换和强制类型转换
1.隐式类型转换
由系统自动转换:当两个不同类型数据运算时,系统会自动把小类型转换为大类型
将所有类型按长度排列:
char ----> short -----> int -----> long ---> float ----> double
int a = 12; float b = 3.4;
a + b --- 系统会自动把a中的数据转换float,再和b相加,运算结果为:15.4
2.强制类型转换
在程序中显式的转换:如果不同类型数据在一起运算,希望将大类型转换为小类型运算,可以强制转换 例如:
int a = 12;
float b = 3.4;
a + (int)b --- 先把b中的数据转换int,再和a相加,运算结果为:15