C语言之基本数据类型

基本数据类型

本章节分为以下几个部分来介绍基本数据类型

1、计算机语言的发展

2、基本数据类型

一、计算机语言的发展

机器语言->汇编语言->高级语言

1、机器语言:计算机所能识别的唯一语言(二进制语言)。例如:10100000。计算机刚问世时就是用1和0来编程,编程起来很不方便。

2、汇编语言:因为机器语言很不容易记忆,所以出现了汇编语言,汇编语言相当于给一些经常出现的机器语言起一个英文名字。例如mov,便于使用和记忆。但是使用起来相对高级语言还是很麻烦,并且可移植性不好,不同系列的芯片,汇编指令不一样。

3、高级语言:把汇编语言再次进行封装。相对于汇编语言,使用起来更简单,可移植性更好。例如C语言、C++、VB、java等等。

c语言相比较其他高级语言,更接近于汇编语言,执行效率更高,所以经常用来编写底层软件。例如裸机程序、操作系统等等。

c语言为什么可移植性好?

    因为c语言编写好的程序最终还是要使用编译器编程成汇编语言,再经过汇编器汇编成机器语言。因为芯片厂商都会提供各自芯片的c语言编译器,所以同样的c语言程序,使用不同的编译器,编译的结果就可以在不同的芯片上运行。

二、基本数据类型

1、字符型

关键字:char 

类型大小:1个字节(BYTE) == 8位(bit)   所以有256种变化(00000000~1111111)

类型的作用:

1)存放整数

有符号字符型(signed char):可以存放正数和负数,因为最高位用来存符号位,所以存储范围为-128 ~ 127

    char a = -10;//正确

    char b = 50;//正确

    char c = 200;//错误用法,超出存储范围

无符号字符型(unsigned char):可以存放正整数,因为不用考虑符号,所以存储范围为 0 ~ 255

unsigned char c = 200;//正确用法 

提示:因为char类型默认是有符号类型,所以signed关键字很少使用

例程:

#include <stdio.h>
int main()
{
    unsigned char ch;//0~255
ch = 200;
printf("ch = %d\n",ch); //%d -- 已十进制格式打印ch
return 0;
}

2)存放字符

什么是字符?

    字形或则符号的表示。简单来说键盘上按下有反应的按键基本上都是字符。

怎么存放字符?

    计算机只能存放二进制数,也就是只能存放数据,那么怎么才能把a b c这样的字符存放到计算机中?

    计算机的数据可以代表一切,就像你往一张白纸上画一道横杠,到底代表什么,是由你来决定的,可以代表一个人,一间房子,一辆车。所以存放字符的本质就是存放一个数字,用这个数字来表示该字符,而这个数字就是字符ASCII码。

例如:char ch = 97;//在变量ch内存放字符‘a', 因为97是'a'的ASCII码表

ASCII码表:

C语言之基本数据类型


ASCII码表内东西这么多,没必要全部记忆,记住几个常用的就行,如果记不住,那么怎么使用字符呢。

char ch = 'a';//等效于 char ch = 97  这样就不需要记忆每个字符的ASCII码了

例程:

#include <stdio.h>
int main()
{
char ch;

ch = 'a';

printf("%c\n",ch);//%c--以字符型的格式打印 ch  结果为 a

        printf("%d\n",ch);//%d--以十进制格式打印 ch 结果为 97

return 0;
}

    字符分类:打印字符和转义字符

    打印字符:'1' '2'  'a' 'b'这些可以打印的字符

    转义字符:有些字符不能用单引号引起来,例如回车键,退格键,就用转义字符来表示。'\r'--回车 '\n'--换行 '\b'--退格等等。

2、整形

关键字:int long short

大小:在32位CPU下,整形int--4个字节  长整形long int --4个字节 短整形short int -- 2个字节

作用:存放整数。和字符型存放整数作用一样,也分为有符号(signed)和无符号(unsigned),就是比字符型可存放的整数更大一些。

注意:长整形可以简写 long 短整形可以简写 short

3、浮点型

关键字:float double

大小:单精度浮点型 float--4个字节 双精度浮点型double -- 8个字节

作用:存放小数。单精度和双精度精确的范围不一样,单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。

单精度是这样的格式,1位符号,8位指数,23位小数。

C语言之基本数据类型

双精度是1位符号,11位指数,52位小数。

C语言之基本数据类型

例程:

#include <stdio.h>
int main()
{
float a;
double b;
a = 10.0/3.0;
b = 10.0/3.0;
printf("a=%.10f\n",a);//%f打印浮点型数据,默认打印小数点后6位。.10作用就是打印小数点后10位

printf("b=%.10lf\n",b);//%lf打印双精度浮点型

return 0;

}

//结果a打印到小数点后6位之后就不精确了,b打印10位全部精确。