第 2章 基本数据类型第 2章 基本数据类型
2.1 整型
2.2 浮点型
2.3 字符型
2.4 逻辑类型
2.5 标准函数
2.6 量的定义方法第 2章 基本数据类型
2.1 整 型
2.1.1 基本整型
1,类型名称
int
2,取值范围
-32768~ +32767( -215~ 215-1)
3.
与数学上类似,不能有分隔符 。 C语言允许使用八进制整数与十六进制整数,八进制整数加前导 0( 数字 ),十六进制整数加前导 0X。
第 2章 基本数据类型
4,运算操作
(1) 算术运算包括,+( 加法 ),-( 减法 ),*( 乘法 ),/( 除法 ),%( 求余 ),运算规则除除法外,与数学中相同 。
整数的除法运算是整除,得到商,如 5/3结果为 1。 对于负数,多数机器采用向零取整法,如- 5/3结果为- 1。
求余运算,又称取模运算,得到余数,如 5%3结果为 2,- 5%3结果为- 2。
求余运算在许多场合都非常有用,如判断整数 a是不是 b的倍数,
可看 a%b是否等于零 。 a%10得到 a的个位数字,a/10) %10得到 a的十位数字,如此可分离一个整数的数字 。
一般只有除数大于 0,求余运算才有意义。当 a小于 0时,a%b等于
-((- a) %b)。
第 2章 基本数据类型
(2) 关系运算包括,<(小于 ),<=(小于等于 ),==
( 等于 ),! =( 不等于 ),>( 大于 ),>=(大于等于 )等六种,运算规则与数学中相同,运算结果为逻辑类型数据 。 关系运算成立结果为 1,不成立结果为 0。
第 2章 基本数据类型
5,存储
C标准没有具体规定各类数据存储的字节数,各种机器处理有所不同,一般以一个机器字 ( Word) 存放 1
个 int数据,PC机上 int数据存储用两个字节 。
机器中用最高位表示数的符号,正数符号位用 0表示,负数符号位用 1表示 。 负数在机器中存放的是其补码 。
第 2章 基本数据类型
6,应用例 2-1 求两个整数的积 。
/*程序 2 - 1,求两个整数之积 */
# include″stdio.h″
main( )
{int a,b;
int m;
printf( ″请输入两个整数 a,b:″) ;
scanf( ″%d,%d”,&a,&b) ;
m=a*b;
printf( ″积 =%d\n″,m) ;
}
输入数据,2000,1
运行结果,积 =2000
第 2章 基本数据类型
2.1.2 拓展整型为拓展数据处理的范围,C语言通过类型修饰符来改变基本数据类型的含义,使之精确适合于不同应用场合 。 拓展后的整型有短整型,长整型及无符号整型 。
1,类型修饰符
short,缩短数值所占字节数 。
long,扩大数值所占字节数 。
signed,有符号位,缺省方式 。
unsigned,无符号位。
第 2章 基本数据类型
2.
短整型类型名称为 short int或 short,在 TURBO C中,短整型与基本整型相同 。
3.
长整型类型名称为 long int或 long,取值范围为- 231~
231- 1( - 2 147 483 648~ 2 147 483 647),长整型数据可加后缀 L表示,在 TURBO C中,存储占 4个字节,运算与基本整型相同 。
第 2章 基本数据类型
4,无符号整型无符号数与有符号数的主要区别是数的最高位不作符号处理,
表示数的绝对范围是有符号数的两倍 。
相应的无符号整型有无符号基本整型,无符号短整型和无符号长整型 。
无符号基本整型,类型名称为 unsigned int或 unsigned,取值范围为 0~ 65 535( 0~ 216- 1),存储占两个字节 。
无符号短整型,类型名称为 unsigned short int或 unsigned,取值,
运算,存储同无符号基本整型 。
无符号长整型,类型名称为 unsigned long int或 unsigned long,取值范围为 0~ 4 294 967 295( 0~ 232- 1),存储占 4个字节 。
无符号整型常用于处理大整数及地址数据。
第 2章 基本数据类型例 2 – 2 整数 9的机器表示 。
作为 int,0000000000001001
作为 short int,0000000000001001
作为 long int,00000000000000000000000000001001
以上第一位为符号位,表示正整数 。
以下第一位为正常的数据位,非符号位 。
作为 unsigned int,0000000000001001
作为 unsigned short int,0000000000001001
作为 unsigned long int,
00000000000000000000000000001001
第 2章 基本数据类型
2.2 浮点型
2.2.1 单精度型
1.
float
2,取值范围绝对值范围为 10- 38~ 1038,7位有效数字。
第 2章 基本数据类型
3,数据表示方法实数有一般形式和指数形式两种表示方法 。
一般形式又称小数表示法,是一种常规形式,由整数部分,小数点,小数部分三部分组成 。 C语言中的实数可以没有小数部分或没有整数部分,如 20.,.375。
指数形式由尾数,指数符号 e或 E,指数三部分组成,
尾数是一般形式的实数 。 指数形式适于表示较大或较小的实数 。 如 2.34e10,2.34e-10,相应于数学中 2.34× 1010、
2.34× 10-10 。
第 2章 基本数据类型
4,运算操作实型数据的运算操作有算术运算和关系运算两大类,运算符同整型,运算规则与数学中实数的运算规则相同,但运算结果可能是一个近似值 。 实数没有求余运算 。
5.
4个字节第 2章 基本数据类型
6,应用例 2 – 3 求两个实数的积 。
/*程序 2 - 3,求两个实数之积 */
# include″stdio.h″
main( )
{float a,b;
float m;
printf( ″请输入两个整数 a,b:″) ;
scanf( ″%f,%f″,&a,&b) ;
m=a*b;
printf( ″积 =%6.3f\n″,m) ;
输入数据,1.1,2.21
运行结果,积 = 2.431
第 2章 基本数据类型
2.2.2 双精度型双精度型类型名称为 double或 long float,取值的绝对值范围为 10-308~ 10308,16位有效数字,数的表示与运算操作同单精度型,8个字节存储,能提高计算精度 。
计算机中太大的数不能表示,太小的数也不能表示,
超出数的表示范围称为溢出,相应的有上溢与下溢 。
对于太大数的处理必须通过间接的方法进行 。
第 2章 基本数据类型
2.3 字符型
2.3.1 字符类型
1.
char
2,取值范围
ASCII码字符集中的字符。
第 2章 基本数据类型
3,数据表示方法字符数据用单引号作界定符,如 ′a′,′+′,′%′,′:′,′1′、
′2′。
注意,单引号字符本身及双引号,反斜杠字符由于有特定的含义,不能如此表示,数字字符与数字不同 。
字符数据本身除了可以直接出现,还可以通过反斜杠后跟 ASCII码描述 。 ASCII码可采用 3位八进制数或 2位十六进制数,相应描述形式是 \ddd与 \xhh( 位数不够,加 0补位 ),这种表示方法称为转义表示或转码表示 。 尤其是一些特殊的字符只能这样表示,如图形字符 ′■ ′的表示 ′\376′,
单引号,双引号,反斜杠可表示成 ′\047′,′\042′,′\134′。
第 2章 基本数据类型如此字符 A可表示为 ′A′,′\101 ′,′\x41′。 对一些常用的特殊字符,C语言还提供特定的字符来转义表示,
′\n′,回车换行 ′\\′:
′\′′,单引号字符 ′\′′:
′\a′,响铃报警 ′\b′:
′\f′,走纸换行 ′\r ′:
′\t′,横向跳格 ′\u′,
第 2章 基本数据类型
4,运算操作
C语言的字符数据实际存储其 ASCII码,存储形式与整数的存储形式类似 。 C语言中规定字符数据与整型数据在 ASCII码取值范围内通用,因而 C语言中字符数据可进行整型数据的运算及操作 。 例如,
① ′a′+′b′,等于 97+98;
② ′a′+2,等于 97+2;
③ ′a′<′b′等于 97<98。
第 2章 基本数据类型
5,存储
1个字节 。
6,应用例 2-4 输出 ASCII码表 。
/*程序 2 - 4,输出 ASCII码表 */
# include″stdio.h″
main( )
{int i;
printf( ″ASCII码表 \n″) ;
for( i=0; i<=255; i++)
printf( ″字符 %c,ASCII码 %d\n″,i,i) ;
}
第 2章 基本数据类型
2.3.2 字符串数据
1,字串表示字串数据用双引号作界定符,如,
″chinaone″,″computer″,″$123.45″,″\nabc″,
″%d%f″
2.
字串数据存储除存储构成字符串的字符序列本身外,还必须附加存储字串的结束标志空操作字符 ′\0′ 存储一个字串的字节数等于字符个数加 1,即字串长度再加 1。
3,字串类型第 2章 基本数据类型
2.4 逻辑类型
2.4.1 逻辑类型
C语言没有专门提供逻辑类型,而是借用整型,字符型,实型来描述逻辑数据 。
C语言规定,0作为逻辑数据代表假,非 0的数作为逻辑数据代表真 。
在一个式子里面要注意区分作为普通数据的数与作为逻辑数据的数 。
C语言同时规定,逻辑数据真为 1,逻辑数据假为 0。
如,2<3为真,表达式的值为 1; 2>3为假,表达式的值为 0。
第 2章 基本数据类型
2.4.2 逻辑运算假定有逻辑数据 p,q,逻辑运算的运算规则为,
① ! p,得到与 p相反的逻辑数据 。 p为真,! p为假 ; p为假,! p为真 ;
② p&&q,只有 p,q同时为真时,运算结果为真 ; 只要 p、
q有一个为假,运算结果为假 ;
③ p||q,只要 p,q中有一个为真,运行结果为真 ; 只有 p、
q同时为假,运算结果为假 。
第 2章 基本数据类型例如,
① ! ( 2>3) 等于 1;
② ( 2>3) &&( 3>2) 等于 0;
③ ( 2>3)||( 3>2)等于 1。
第 2章 基本数据类型
2.5 标准函数函数调用通过函数名进行,以实际数据 ( 实参 ) 代替函数中的参数,即函数名 ( 实参 ) 。
数 学 函 数 包 含 在 头 文 件 math.h 中,用# include
″math.h″指明 。
参数 x为 double,或 float,或 int型数,函数值为 double型 。
① acos( x),求 x的反余弦,x必须在- 1~ 1的范围内 。
② asin( x),求 x的反正弦,x必须在- 1~ 1的范围内。
第 2章 基本数据类型
③ atan( x),求 x的反正切 。
④ cos( x),求 x的余弦,x的单位必须为弧度 。
⑤ exp( x),求 e x的值 。
⑥ fabs( x),求 x的绝对值 。
⑦ floor( x),求不大于 x的最大整数 。
⑧ log( x),求 lnx。
⑨ log10( x),求 lgx。
10 pow( x,y),求 x y。
11 sin( x),求 x的正弦,x
12 sqrt( x),求 x的平方根,x必须大于等于 0。
第 2章 基本数据类型
2.6 量的定义方法常量是在程序运算过程中不变的量 。
常量在程序中经常直接出现,如 123,3.14159,′a′、
″computer″,此时只要求它们符合相应类型数据的表示方法 。 相应于各种数据类型,有整型常量,浮点型常量,字符型常量及字符串常量 。
第 2章 基本数据类型常量定义是指定义符号常量,用一个标识符来代表一个常量,通过宏定义预处理指令来实现 。
格式,# define 标识符由用户命名的标识符是符号常量名 。 作为符号常量名,一般大写 。 一旦定义,在程序中凡是出现常量的地方均可用符号常量名来代替 。
对使用了符号常量的程序在编译前会以实际常量替代符号常量。
第 2章 基本数据类型例 2 – 5 求圆的面积 。
/*程序 2 - 5,求圆的面积 */
# define PI 3.14
# define R 2
# include″stdio.h″
main( )
{float s;
s=PI*R*R;
printf( ″面积 =%6.3f″,s) ;
}
运行结果,面积 =12.560
第 2章 基本数据类型
2.6.2 变量定义
1,变量定义方法格式,类型名 变量表 ;
变量表是用逗号分开的变量名 。 例如,
① int i,j; /*定义 i,j为整型变量 */
② float x,y; /*定义 x,y为实型变量 */
③ char ch; /*定义 ch为字符型变量 */
第 2章 基本数据类型
2,变量的初始化定义了变量,变量并没有值 。 可以在定义变量的同时给出初值,对变量进行初始化 。
例如,
① int i=9; /*定义整型变量 i,初值为 9*/
② float r=1.5; /*定义实型变量 r,初值为 1.5*/
③ char answer=′y′; /*定义字符型变量 answer,初值为字符 y*/
第 2章 基本数据类型
3,数据分析方法程序设计,一方面是对数据进行描述,另一方面是对操作进行描述 。 对于一个问题,到底需要定义哪些量,定义什么样的量,必须经过数据分析 。 数据分析根据求解的问题选择适当的类型来描述数据,明确求解问题用到的量的名字及类型 。
对于任何问题,我们都可将数据分成三大类,输入数据,
中间数据,输出数据 。 输入数据反映程序运行的数据源,
中间数据是程序运行的中间结果,输出数据是程序运行得到的结果,反映编程的目的 。 程序中相应地用输入量来描述输入数据,用中间量来描述中间数据,用输出量或称结果变量来描述输出数据 。
第 2章 基本数据类型对于一个问题,在开始设计程序时输入量,输出量一般是明确的,中间量往往不能一下子全部确定,可在程序的编制过程中根据需要动态追加 。
数据分析一般采用如下格式,
数据分析,
输入量,
中间量,
输出量,
第 2章 基本数据类型例 2-6 求三角形的面积与周长 。
输入数据,
中间数据,
输出数据,
数据分析一般采用如下格式,
数据分析,
输入量,三边 S1,S2,S3,float
中间量,半周长 hl,float
输出量,面积 S,周长 l,float
编写程序代码时,数据分析转化成程序的变量定义部分 ( 说明部分 ),
float S1,S2,S3; /*三角形三边 */
float hl; /*半周长 */
float l,S; /*周长,面积 */