2.C Primer Plus 第三章(1)
- 《C Primer Plus第六版》第三章(1)
- 主要内容:
- 3.2.变量与常量数据
- 3.3.数据:数据类型关键字
- c语言基本数据类型关键字
- 两大基本数据类型:
- **2.浮点数类型
- 位、字节和字
- 位:最小的存储单元(bit),可以储存0或1(或者说,位用于设置“开”或“关”)。虽然1位储存的信息有限,但是位在计算机中的数量十分庞大,位是计算机内存的基本构建块。
- 字节:字节(byte)是常用的计算机存储单位。1个字节中均为8位,这是字节的标准定义,而c语言中对此的定义有所不同。由于一位由0或1组成,因此一个字节通过二进制编码可以表示从0到255的二的八次方(256)个数。
- 字:字(word)是设计计算机时给定的自然存储单位。对于8位的微型计算机,1个字长只有8位。从那以后随着科技的不断发展,个人计算机字长不断增到16位、32位直到目前的64位。**计算机的字长越大,其数据转移越快,允许的内存访问也更多。
- 两大基本数据类型:
- 3.3.1.整数与浮点数
- 3.3.2.整数
- 3.3.3.浮点数
- c语言基本数据类型关键字
《C Primer Plus第六版》第三章(1)
主要内容:
关键字:int、short、long、unsigned、char、float、double、_Bool 、_Complex、__Imaginary
运算符:sizeof()
函数:scanf()
整数类型和浮点数类型的区别、如何书写整型和浮点数型常数,如何声明这些类型的变量以及如何使用printf()和scanf()函数读写不同类型的值与如何操纵数据、常量与变量的区别
重点:讲解c语言中两大数据类型:整型数据、浮点数类型的数据是什么、如何声明、如何以及何时使用它们
3.1.示例程序


提示 错误与警告
如果输入程序打错(如:掉了分号等),编译器会报告语法错误消息。但是,即便输入程序无错,编译器也可能会发出一些警告,如“警告:从double类型转换为float类型可能会丢失数据。”
报错表示输入程序中有错误导致编译器无法正常进行编译程序;警告则表明,尽管编写的代码无错误,但可能得到的程序不是你想要的,警告并不终止编译过程。
注意在此程序中,可以将1700.0换成市场价,但是14.5833,该数是用于一英镑的金衡盎司数(金衡盎司用于衡量贵重物品,而英镑的平衡盎司用于衡量人的体重。)且“enter your weight ”的意思是输入你的体重,然后记得按下enter键或者return键(不要输入体重后就一直等着)。按下enter键才代表完成整个输入过程,告知计算机,你已输入完数据。在该程序中,你输入的数据应该是一个具体的数值,而非概化的描述,例如too much,否则,计算机编译不出程序运行的结果。
示例运行结果:
Are you worth your weight in platinum?
Let's check it out.
Please enter your weight in pounds:156
Your weight in plarinum is worth $3867491.25.
You are easily worth that! If platinum prices drop,
eat more to maintain your value.
程序调整
即使用第二章中介绍的方法,在程序中末尾处加入一行代码:
getchar();
而在本次的程序示例中的程序则需要调用两次的getchar()函数:
getchar();
getchar();
getchar()函数读取下一个输入字符,因此程序会等待用户的输入。
在这种情况下,输入156并按下enter键或return键(发送一个换行符),然后scanf()读取输入的数字,第一个getchar()读取换行符,第二个getchar()让程序暂停,等待输入。
3.1.1.程序中的新元素
使用了除int(整数数据)外的float(浮点数类型的数据),以便用于处理更大范围的数据。float类型可以储存带小数的数字。
为了打印出浮点数类型的变量,在printf()中使用%f来处理浮点数数值。%.2f中的.2用于精确控制输出,指定输出的浮点数只显示小数点后面的两位。
scanf()函数则用于读取键盘的输入。%f说明scanf()要读取用户从键盘上输入的浮点数,&weight告诉scanf()把输入的浮点数赋给名为weight的变量。 scanf()函数使用&符号表明找到某变量(例如本例中weight变量)的地点。
交互性:计算机向用户询问信息,然后用户输入数字。也就是说在此程序中,变量weight的的值可以随意改变成另外的浮点数值,而运行改动了数值的程序也不用重写,仍能正常进行程序的编译与运行,于是用户可以用该程序运行任意weight对应的value值而不用每次都重写程序。而此程序交互性的形成主要依赖于printf()函数和scanf()函数的使用,scanf用于读取用户从键盘上输入的数值,并将数值传递给程序,而printf()函数则读取程序中的数据,并将其打印在屏幕上。正是结合了这两个函数,建立起了人机双向通信。
如图:


3.2.变量与常量数据
变量数据:其他数据类型在程序运行期间可能会改变或者被赋值,,这类数据被称为变量(variable)。
常量数据:有些数据类型,在程序整个运行使用之前已经被预先定好了,在程序整个运行期间不会发生改变,这样的数据被称为常量(constant)。
例如在上述示例中的weight为变量,在程序运行过程中被赋值,且被赋予的数值可以改变,属于变量,而14.5833和1700.0在上述程序中早已预先定好,在程序运行过程中也并未发生改变,属于常量数据,尽管1700.0在生活中会因为一些原因不断改变,但在程序中仍根据定义早已被定好程序运行过程中未发生变化而属于常量数据。
3.3.数据:数据类型关键字
c语言基本数据类型关键字

—Bool、—Complex、—Imaginary等关键字
表示整数类型的有:int表示基本常数类型数据(常与long、 short、unsigned、signed等连用),例如unsigned int、short int、long int等
char关键字用于指定字母和其他字符(例如,#、$、%、*等),同时char类型也可以表示较小的整数。
表示小数则用:float、double、long double
—Bool表示布尔值(true或者false)。
—Complex表示复数,而—Imaginary表示虚数。
两大基本数据类型:
1.整数类型
**2.浮点数类型
位、字节和字
位、字节和字均是描述计算机数据单元或者存储单元的术语。在这里主要指存储单元。
位:最小的存储单元(bit),可以储存0或1(或者说,位用于设置“开”或“关”)。虽然1位储存的信息有限,但是位在计算机中的数量十分庞大,位是计算机内存的基本构建块。
字节:字节(byte)是常用的计算机存储单位。1个字节中均为8位,这是字节的标准定义,而c语言中对此的定义有所不同。由于一位由0或1组成,因此一个字节通过二进制编码可以表示从0到255的二的八次方(256)个数。
字:字(word)是设计计算机时给定的自然存储单位。对于8位的微型计算机,1个字长只有8位。从那以后随着科技的不断发展,个人计算机字长不断增到16位、32位直到目前的64位。**计算机的字长越大,其数据转移越快,允许的内存访问也更多。
3.3.1.整数与浮点数
整数与浮点数为c语言中两种最基本的数据类型。对于我们而言,整数和浮点数的区别是它们的书写方式不同,而对于计算机而言,它们的区别在于储存方式不同。
3.3.2.整数
和数学中的概念一样,在c语言中,整数是没有小数部分的数。如2、568、745、-255等都是整数,而0.2、3.14、2.00都不为整数,计算机以二进制数存储整数,例如整数7以二进制写成111,由于,要在8位字节中存储,则将前5位记0,后3位写1。
如图:

3.3.3.浮点数
浮点数与数学中实数的概念差不多。注意,在一个值后面加上一个小数点,该值就成为一个浮点值。因此7为整数,而7.0、7.00.7.000等均为浮点数。
浮点数的计数方式
书写浮点数有很多种方式,这里介绍e计数法,例如:3.16E7表示3.16乘以10的七次方。其中十的七次方等于一千万,而7则为10的指数,10为底数。
浮点数的存储方式
计算机把浮点数分成小数部分和指数部分来表示,而且分开存储这两个部分。因此7和7.00在数值上相同,但在计算机中的存储方式完全不同。
例如下图存储Π的近似值3.14159(以浮点格式十进制)

浮点数与整数形式的区别
1.整数没有小数部分,而浮点数有小数部分。(浮点数可以表示的数据的范围比整数更大)
2.对于一些算数运算(如,两个很大的数相减),浮点数损失的精度更多。
3.过去,浮点运算比整数运算慢。不过,现在很多CPU都包含浮点处理器,缩小了速度上的差距。

浙公网安备 33010602011771号