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进行强制类型转换,在不同数据类型的混合运算中编译器会隐式的进行数据类型转换,称为自动类型转换,遵循如下规则:

  1. 若参与运算的数据类型不同,则先转换为同一类型,然后再进行运算
  2. 转换按数据长度增加的方向进行,保证精度不会降低, int -> long
  3. 所有浮点运算都是双精度的,即使两个单精度数运算也要先转化成双精度
  4. charshort类型的变量运算的时候必须先转化成int
  5. 在赋值运算中,需要把右边表达式类型转换成左边变量的类型。
代码示例#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;
}