基本数据类型

一.常量

常量分类

1.定义

值不可以改变的量

2. 分类

 1)整型常量

整数:有十进制,八进制,十六进制

 2)实型常量

有两种表示形式:

1.十进制小数形式:(注意:19. 是合法的,.19表示0.19;也是合法的)

由数字和小数点组成。如:123.456、0.789、-12.34、0.0、10.0等;

2. 指数形式

如12.34e3(表示12.34103)、 -67.89e-16(表示 -67.8910-16)等。由于计算机输入或输 出时无法表示上标和下标,所以规定以字母e或E代表以10为底的指数,需要注意的是e和E之前必须要有 数字,且e和E后面必须为整数,不能写成e4、12e2.5。

 3)字符常量

①普通字符常量:用单引号括起来的一个字符,如:’a’,’B’,’3’,’@’,’#’。不能写成’ab’或’12’,注意 单引号只是个界限符,字符是指用单引号括起来的符号,不包括单引号。字符型在内存中是以ASCII码形 式存储的,例如字符’a’的ASCII码的十进制为97,在存储单元中存放的是97的二进制形式。

②转义字符:C语言中还有一种特殊形式的字符常量,是以字符\开头的字符序列。例如:’\n’换 行、’\t’水平制表符(tab)、’\’’单引号、’\”’双引号、’\?’问号、’\’斜杠、’\a’警告声音提示、’\b’退格删除 符、’\f’换页符、’\r’回车、’\v’垂直制表符、’\o’八进制形式、’\x’十六进制形式等。转义字符的意思是 将’\’后面的字符转换成另外的意义。如’\n’中的n不代表字母n,而是作为换行符。

 4)字符串常量

如”ABC”、”123”等,用双引号把若干个字符括起来,字符串不包括双引号。注意不 能写成’abc’、’123’,单引号内只能包含一个字符,表示字符常量;双引号内可以包含一串字符,表示字 符串常量。

 5)符号常量

用#define指令指定用一个符号代表一个常量。 如:#define PI 3.1415926(注意末尾没有分号) 也就是用PI代替3.1415926,意思很简单,代表圆周率。 使用符号常量可以让常量在使用时含义更清楚,并且在需要改变程序中多处用到了同一个常量的时候, 能够做到“一改全改”。 注意不要把符号常量误认为变量。

 6)地址常量

每一个常量、变量、数组的地址在程序运行期间是不能够改变的,称为地址常量。

sizeof();

二.变量

变量就是在程序运行中,值可以改变的量。 变量代表一个有名字的、具有特定属性的一个存储单元,可以用来存储数据,也就是变量的值。 变量必须先定义后使用。变量名的命名规则应符合标识符命名规则。

标识符

标识符用来标识和区分我们所定义的各种数据量,标识符命名规则:只能由字母、数字、下划线’_’组 成,并且只能由字母和下划线开头。

三.基本数据类型

1.指定数据类型的原因

数学运算与计算机运算的区别。

在数学中,数值是不分类型的,数值的运算是绝对精准的,例如1/3的值是0.333333333……(循环小 数)。数学是一门研究抽象的学科,数和数的运算都是抽象的。

而在计算机中,数据是存放在存储单元 中的,它是具体存在的。并且存储单元是由有限的字节构成的,每一个存储单元中存放数据的范围是有 限的,不可能存放“无穷大”或者“无限”的数,也不能存放循环小数了。例如计算和输出1/3,以%f格式 输出得到的结果是0.333333,只有6位小数,而不是无限循环小数。

c语言数据结构类型

 

2.定义

类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少个字节)以及数据的存储 形式。不同类型分配不同的长度和存储形式,我们将int、float、char等称为类型名称,或者数据类型 关键字。

1字节=8位(【0000 0000】)

 

3.分类

 1)整型数据类型

整形数据类型及其占位

1个二进制 数字表示1位,1字节表示八位

 

 

 

 

2)字符型

char  1字节  unsigned  范围:ASCLL码表(0~255)

有符号的字节型(符号位占一位)  取值范围:-128~127(关于为什么是-128,这涉及到码制)

ASCLL码表介绍
ASCLL码表(不用背)

 

字母:大写字母A~Z和小写字母a~z;

数字:0~9;

专用字符:! ” # ’ & %* ( ) + - / _ ^ { } [ ] \ ~ < > = , . ? ; : | ~ ` 等;

空格符:空格’ ’、水平垂直制表符’\t’、换行符、换页符。

不能显示的字符:空(NULL)字符’\0’、警告字符’\a’、退格符’\b’、回车符’\r’等。

特殊情况:当字符存储其他文字字符时,其占两个或多个字节,如:char ch=’中’;

中文字符实际上占2个字节,内存的补正(补齐)会把超过一个字节但不超过四个字节的,统一按照4个 字节处理

3)浮点型

浮点型数据用来表示具有小数点的实数

 

 float精确到小数点后6位,double精确到后16位。

//保存某个同学的平均分,精确到小数点后两位
float AverageScore =89.79f//89.79默认是个double数据
                          //89,79f是个float数据

 

为什么在C语言中把实数称为浮点数呢 ? 

        在C语言中,实数是以指数的形式存放在存储单元里的。一个实数表示为指数可以有不止一种形式, 如:3.14159可以表示为3.1415910^0, 0.31415910^1,0.031415910^2, 31.415910^-1, 314.15910^-2, 3141.5910^-3等,它们表示同一个值。

        以此看来,小数点的位置是可以314159几个 数字之间和之前或之后加0浮动的,只要在小数点浮动的同时改变指数的值,就可以保证它的值不会改 变。

         由于小数点的位置可以浮动,所以实数的指数形式称为浮点数。 在指数形式的多种表示方式中,把小数点前的数字为0和小数点后的数字不为0的表示形式称为规范化的 指数形式,在程序以指数形式输出一个实数时,必然以规范化的指数形式输出,如0.314159e1。

4)怎样确定常数的基本类型

在C语言中,不仅变量有类型,常量也是有类型的。为什么要把常量分为不同的类型呢?

        在程序中出现 的常量是要存放在计算机中的存储单元中的,这就必须确定分配给它多少字节,按什么方式存储。例 如,程序中有整数16,在编译器中会分配给它4个字节,按补码形式存储。 怎样确定常量的类型呢?从常量的表示形式即可判定其类型。

(1)符号常量:对于符号常量来说很简单,只要看到由单引号括起来的单个字符或转义字符就是字符常 量,以ACSII码值进行存储,占1个字节。

(2)整型常量:不带小数点的数值是整型常量,但要注意其有效范围。如果某系统中为整型数据分配2 个字节,其表示范围为-32768~32767(-2^16~2^16-1),如果在程序中出现数值常量12345,则系统 把它作为int型处理,用4个字节存放。如果出现数值常量45678,由于其大于32767,2个字节放不下, 所以系统就会把它作为长整型(long int)进行处理,分配4个字节。以此类推,如果出现的数值常量超 过4个字节的表示范围的话,系统就会把它当作长长整型(long long int)。 在整数的末尾加上大写字母L或小写字母l,则表示它是长整型(long int)。例如123L、666l等。在VS 编译环境中int和long int数据都分配4个字节,因此没有必要用long int。如果在整数的末尾加上大写字 母LL或小写字母ll,则表示它是长长整型(long long int),其在内存中占8个字节。

(3)浮点型常量:凡是以小数形式或指数形式出现的实数,都是浮点型常量,在内存中以指数形式存 储。如:0、10为整型常量,0.0、10.0是浮点型常量。注意:对于浮点型常量,编译器默认是按双精度 进行处理的。例如:float a=3.14159;在编译时,给float变量分配4个字节,而对于浮点型常量 3.14159来说,则是按double型处理,分配8个字节,编译器有时会发出“警告”。这种警告一般不会影响 程序运行结果,但是会影响程序运行结果的精确度。 可以在常量的末尾加一个F或f,强制指定常量的类型为单精度。如果在实型常量的末尾加一个L或l,就 是指定此常量为long double类型。

 注意:区分类型与变量、变量与常量的概念

 

四.数据的输入与输出

讨论程序的输入和输出时首先要注意:

        所谓的输入输出是以计算机主机为主而言的。 计算机向输出设备(如显示器、打印机等)输出数据称为输出,从输入设备(如键盘、磁盘、光盘、扫 描仪等)向计算机输入数据称为输入。

        C语言函数库中提供了一批“标准输入输出函数”,它是以标准的输入输出设备(一般为终端设备)为输入 输出对象的。

        其中有:printf,scanf,putchar,getchar,puts,gets等函数。 在使用这些库函数时,要在程序文件的开头用预处理指令#include把相关头文件加载进本程序中。 stdio.h math.h string.h windows.h

1.输出

1)用printf函数输出数据(格式化输出函数)

 %4d和%5.2f中的4和5.2是在格式声明中用来指定输出数据的域宽(所占列数)的,如%6d,是指定输 出的整型数据占6列,%8.3f,是指输出的浮点型数据总共占8列,其中小数占3列,小数点占1列。还可 以在域宽数字前加一个’-’号,用于使输出左对齐。

 2)putchar字符输出函数

如:putchar(a);//输出字符型变量a的值;

//putchar('a');//输出字符a

2.输出

1)用scanf函数输入数据(格式化输入函数)

①函数的地址列表是以变量的地址作为参数的时候,变量名前面必须加一个取地址符号’&’,用于取此变 量的地址,否则会出错。

②如果在“格式化控制字符串”中除了格式声明符以外还有其他字符,则应在输入数时在对应位置上输入 与这些字符对应的相同的字符。

③在输入数值型数据时,如输入空格、回车、tab键或非法字符(除scanf格式声明中指定的)等不属于 数值的字符,则认为此数据输入结束。 如:scanf(“%d%c%f”,&a,&b,&c);//输入1234a567.8b9,a=1234,b=’a’,c=567.8 //&取址符

④scanf函数中double型数据需要使用%lf才能正常得到所输入的值,而输出可以用%f输出。

⑤在输入时也可以进行域宽控制 如:scanf("%3d%4d",&a,&b); //输入12345678,则a=123,b=4567;

2)字符的输入

getchar()   输入结束:回车键

由于scanf、getchar等输入函数没有从键盘接收到数据就不会继续执行,所以在程序中可以起到与 system("pause");函数类似的暂停效果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿井侯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值