2.1变量与数据类型
- 计算机要处理的数据都是以二进制的形式存储在内存当中的
- 将8个比特(bit)称为一个字节(byte),将字节作为最小的可操作的单元
变量(Variable)
C语言中使用如下的方式声明变量,在内存中分配空间来存储数据:
int a; // 表明在内存中分配一区域,用来保存整数,称a为变量
a = 123; // 赋值,将数据存放到内存中
a = 1000; // 变量中存放的数据可以被覆盖
上述代码中 int a;称为变量定义。 a = 123 称为变量赋值,第一次赋值也称为变量的初始化。
数据类型(Data Type)
数据类型用来说明数据的类型,计算机根据数据类型来分配正确的内存形式来存储数据,int a;表明地址单元中存放的是整型数据,C语言中的数据类型如下:
| 字符型 | 短整型 | 整型 | 长整型 | 单精度浮点数 | 双精度浮点数 | 无类型 |
|---|---|---|---|---|---|---|
| char | short | int | long | float | double | void |
| 1 byte | 2 byte | 4 byte | 4 byte | 4 byte | 8 byte | - |
上述表格中最后一行是32位环境中不同数据类型的数据的长度,在定义变量类型的同时也声明了数据的长度。由于数据在内存中是连续存储的,没有明显的边界,因此有必要声明数据的长度来确定数据的边界。
类型转换
使用(type_name)expression进行强制类型转换,在不同数据类型的混合运算中编译器会隐式的进行数据类型转换,称为自动类型转换,遵循如下规则:
- 若参与运算的数据类型不同,则先转换为同一类型,然后再进行运算
- 转换按数据长度增加的方向进行,保证精度不会降低,
int -> long - 所有浮点运算都是双精度的,即使两个单精度数运算也要先转化成双精度
char和short类型的变量运算的时候必须先转化成int型- 在赋值运算中,需要把右边表达式类型转换成左边变量的类型。
代码示例#2.1.1-控制台输出变量:
#include <stdio.h>
int main()
{
int a = 123;
char c = 'y';
double n = 66.66;
float f = 88.88;
long l = 1231232132;
printf("a=%d, c=%c, n=%lf, f=%f, l=%ld", a, c, n, f, l);
return 0;
}