C语言程序设计 数据的存储与运算

1 数据在计算机是怎么存储的

1.1 数据在计算机是以二进制形式存储的

每个二极管原件如同一个开关,有两种稳定的工作状态:“导通”与“截止”,即电脉冲的“有”与“无”,用1和0表示。

1.2 位、字节和地址

位,“比特”(bit)。是存储信息的最小单位。它的值是1或0。
字节,“拜特”(byte)。将8个“二进制位”组织成一组,称为“字节”。
1KB=1024B。
地址,找到存储单员的索引。
在这里插入图片描述
2001,2002,2003,2004,2005,2006就是地址。

1.3 不同类型数据的存储方式

1.3.1 整数的存储方式

在这里插入图片描述

一字节有8个二进制位,左边第1位(即最高位)用来表示符号,当最高位为0时表示是正数。其他7位数用来存放数值,则它的最大值是01111111,即2^7-1。若数值为负数,用“补码”表示的。

补充:求补码的方法
不论正数还是和复数,都是按“补码”形式存放到存储单元的。对于正数来说,补码就是该数的“原码”。
求一个复数的补码方法是:
(1)取该数(不考虑数的符号)的二进制形式,它就是源码。
(2)对该原码“取反”(逐位把0变1,把1变0),得到其“反码”。
(3)将得到的反码加1,就是补码。
总结:负数的补码形式的最高位都是1,正数的最高位都是0。

1.3.2 实数的存储形式

实数,采用指数形式存储。标准化指数形式,小数点前的数字是零,小数点后的第一数字不是零。
4个字节存储一个实数。
在这里插入图片描述

1.3.3 字符的存储形式

字符包括字母(如A,a,X,x)、专用字符(如!,@,#)等。
将字符的代码存储到相应的存储单元中。一般采用国际通用的ASCCII代码。

2 整型数据的运算与分析

2.1 整型常量与整型变量

2.1.1 常量与变量

常量是指程序运行过程中其值不能改变的量。
变量是指程序运行过程中其值可以改变的量。

变量名就是以一个容易记忆的名字表示一个存储单元的地址。
变量名,变量值,变量地址,存储单元
在这里插入图片描述
变量名的取名规则
(1)C语言规定变量名的第一个字符必须是字母或下划线,其后的字符必须是字母、数字或下划线。
如:sum,Class,_taoal…
该规定还适用于函数名,数组名、类型名。
标识符是用来标识对象(包括变量、函数、类型等)名字的有效字符系列称为标识符。
(2)大小写字母表示不同的字符。
(3)变量名的长度不是无限的。
(4)变量名尽量简单易记。
(5)在同一程序的同一函数中,不同的变量不能取相同的变量名。

变量必须“先定义,后使用”。

2.1.2 整型常量的表示形式

十进制 123
八进制 以0开头的数。0123
十六进制 0~15 a,b,c,d,e,f分别代替10,11,12,13,14,15。凡以0x开头的数都被认作十六进制数。

2.1.3 整型变量的种类

基本整型,类型名为int。
长整型,类型名为 long int。
短类型,类型名为short int。

3 实型数据的运算与分析

3.1 实型常量的表示形式

浮点数
浮点数有两种表示形式。
(1)十进制小数形式。必须有小数点。如:3.0,2.11,0.0…
(2)指数形式。用字母e和E代表以10为底的指数。字母e或E之前必须有数字,且e后面的指数必须为整数。如:e3,.e3,2e,2.2e3.5…

3.2 实型变量

3.2.1 实型变量的分类

单精度实型变量(float型)
双精度实型变量(double型)
长双精度实型变量(lobg double型)
用sizeof()函数测定类型或变量的长度

3.2.2 实型数据的舍入误差

float单精度浮点变量,只能提供6~7为的有效数字。
为了提高数据的精度,可以将变量定义为双精度double,用8字节存储数据,可以得到15~16位的有效数。

4 字符型数据的运算

4.1 字符常量

字符常量是用单撇号括起来的一个字符。如:‘a’,‘A’,’!’,’@’…

转义字符
如果以单个字符形式(‘a’)出现,应该用‘ ’把\n包起来(即’\n’),如果出现在一个以“ ”包起来的字符串,则不要‘ ’。
\n 换行
\r 回车
\ 表示/
\0 空操作,常用于字符串中,作为字符串的结束标志,常省略。

4.2 字符变量

字符型变量用于存放字符常量,它只能放一个字符。
形式:char 字符变量列表;
如:char c1,c2; //定义c1,c2
c1=‘a’;c2=‘b’; //对c1和c2赋值

字符数据与整型数据在一定条件下可以通用
在这里插入图片描述

字符变量以字符形式输出,则就会输出该字符变量的SCII值。
在这里插入图片描述

字符数据与整型直接进行算术运算。

4.3 字符串常量

字符串常量是“ ”括起来的字符序列。如:“How do you do.”
C语言没有专门的字符串变量,不能将一个字符串存放在一个变量中。

5 符号常量

5.1 字符常量的性质和使用方法

#define不是C语句,该行的末尾没有分号,它是一个“预编译指令”。

符号常量只是一个符号,不占存储单元。
符号常量只是符号,不是变量,不能被赋值,不能对符号常量指定类型。
一般,符号常量命用大写,变量名用小写。
符号常量能保护所代表的数据不被破坏。

6 算术运算符和算术表达式

6.1 算术运算符

6.1.1 基本的算术运算符

(1)+ 加法运算符,或正值运算符,如1+1…
(2)- 减法运算符,或负值运算符,如5-3,-3…
(3)* 乘法运算符,如53
(4)/ 除法运算符,如5/3
(5)% 模运算符,或称求余运算符,求两个整数相除之后的余数,%两侧均应为整型数据,结果也是整数,如19%4的值为3。
如果除数或被除数中有一个为负值,采取“向零取整”的方法取整后向零的方向靠拢。即5/3=1,-5/3=-1。
如果+,-,
*,/,运算两个数中有一个数为float或double型,则结果都是double型。

6.1.2 自增、自减运算符

++i,- -i (在使用i之前,先使i的值加/减1)
i- -,i++ (在使用i之后,先使i的值加/减1)

使用范围:只能用于变量。

6.2 算术表达式

用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算式表达式。运算对象包括常量、变量、函数等。

6.2.1 各类数值型数据键的混合运算

转换的规则为:
char和short型转换为int型。
float型一律转换为double型。
整型(包括int,short,long)数据与double型数据进行运算,先将整型转换为double型。
一句话:字节少的数据转换成字节多的类型。

6.2.2 强制类型转换

形式:(类型名)(表达式)
如果已定义x为float类型,进行强制类型运算后得到一个int型的中间变量,它的值等于x的整数部分,而x的类型不变(仍为float型),如下:
在这里插入图片描述
注:强制类型转换运算优先于%运算。

7 C运算符和C表达式

7.1 C运算符

算术运算符+ - * / %
关系运算符< > == >= <= !=
逻辑运算符! && | |
位运运算符<< >> ~ | ^ &
赋值运算符=
条件运算符? :
逗号运算符,
指针运算符 *和&
求字节数运算符sizeof
强制类型转换运算符(类型)
成员运算符.->
下标运算符[]

7.2 C表达式

算术表达式 如2+2.2*3.5+sin(0.5)
关系表达式 如x>0,y<x+10
逻辑表达式 x>0&&y>0(&&表示“与”,表示x>0与y>0同时成立)
赋值表达式 如a=5.6。
逗号表达式 如a=3,y=4,z=8。

8 提高部分

8.1整型常量的表示形式

(1)十进制整数,如123,-12.3。
(2)八进制整数,八进制整数的特点是逢八进一。在程序中凡以0开头的数都被认作八进制数。
(3)十六进制整数。十六进制整数的特点是逢16进1。在十六进制数中可以用0~15这16个数,但应该只用一个字符代表其中一个数,C语言规定用字母a,b,c,d,e,f分别代替10,11,12,13,14,15。在程序中凡是以0x开头的数都被认作十六进制数。
以下3个赋值语句是等效的。(默认a已经定义为整型变量)
在这里插入图片描述

8.2 整型变量的类型

short型数据分配2字节,16位。int和long型数据都是4字节,32位。
在定义整型变量时, 都可以加上修饰符unsigned,以指定为“无符号数”。如果加修饰行signed,则表示指定的是“有符号数”。如果既不指定为signed,也不指定为unsigned,则隐含为为有符号(signed)。实际上signed是可以省写的。如:
有符号基本整型 [signed] int
无符号基本整型 unsigned int
有符号短整型 [signed] short[int]
无符号短整型 unsigned short[int]
有符号长整型 [signed] long[int]
无符号长整型 unsigned long[int]
(上面的方括号表示其中的内容是可选的,既可以有,也可以没有,效果相同)

8.3 C语言允许使用的数据类型

在这里插入图片描述

运算符的优先级与结合性
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

小结

(1)在C语言中,数据都是属于一定的类型的。整数以其二进制数(补码)形式存储,字符型数据以其对应的ASCII代码形式存储,实数以指数形式存储。
(2)要区别类型和变量,类型名变量名
(3)数据的表现形式有常量和变量。而常量有字面常量和符号常量两种形式,符号常量与变量不同,它不占存储空间,不能对它指定类型、不能被赋值,它只是一个字符串,用来代替一个已知的常量。
(4)标识符用来标识一个对象。
(5)区别字符字符串
(6)使用++和–,如i++、p- -。
(7)两个不同类型数据进行算术运算时,占字节少的数据先转换为字节多的数据类型,然后进行运算,得到的结果是字节多的数据类型。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值