1、C程序设计程序设计Programming in C将简单数据引入将简单数据引入C程序中程序中1、数据类型2、数值常量C程序设计程序设计32.1 数据类型数据类型C语言内置数据类型42.1 数据类型数据类型表2-1 基本类型数据的内存长度和数值范围-128+1271signed char字符型042949672954unsigned long int无符号长整型-2147483648+21474836474signed long int长整型0655352unsigned short int无符号短整型-32768+327672signed short int短整型042949672954uns
2、igned int无符号整型-2147483648+21474836474signed int整型精度数值范围内存长度(字节)类型标识符类型52.1 数据类型数据类型续表2-1 基本类型数据的内存长度和数值范围同上/19同上/同上/12long double长双精度型168double双精度型74float单精度型02551unsigned char无符号字符型精度数值范围内存长度(字节)类型标识符类型38 383.4 10 3.4 10308 3081.7 10 1.7 104932 49321.2 10 1.2 1062.1.1 整型整型C语言整型分为长整型(long int)、基本整型(
3、int)和短整型(short int)long int可以简写为long、short int可以简写为short。int型数据的内存长度与系统平台相关,通常int型为机器的一个字长,short型不比int型长,long型不比int短。72.1.1 整型整型短整型数123在内存中的存储形式为短整型数-123在内存中的存储形式为82.1.1 整型整型整型还分有符号(signed)和无符号(unsigned)类型,其中signed书写时可以省略。92.1.1 整型整型图2.2 short型的溢出一般地,超过最大值的有符号整型数值会向上溢出变成负数,超过最小值的数据会向下溢出变成正数。102.1.2
4、浮点型浮点型C语言浮点型又称实型,分为单精度(float)、双精度(double)和长双精度(long double)3种。在VC中规定float型在内存中占用4个字节,提供7位有效数字;double型和long double型在内存中占用8个字节,提供16位有效数字。在GCC中long double型在内存中占用12个字节,提供19位有效数字。112.1.2 浮点型浮点型因为浮点型数据长度和精度是有限的,所以浮点数存在舍入误差和计算误差。一个较大的浮点数与一个很小的浮点数做加法时,由于精度限制使得很小的浮点数被忽略了,从而使得这样的加法无意义。两个浮点数做比较,由于有误差很难做到绝对相等,只
5、能通过它们差的绝对值小于一个很小的数来判断是否近似相等。122.1.2 浮点型浮点型【例2.1】浮点型数据的误差。132.1.2 浮点型浮点型例2.11 #include 2 int main()3 4 float a=0.00000678f, b=0.00000123f;5 double c=0.00000678 , d=0.00000123;6 double e=100000000000000000000.0;7 a=a+111111.111f; /精度范围外的大浮点数与小浮点数相加8 b=b+111111.111f; /精度范围外的大浮点数与小浮点数相加9 c=c+111111.111;
6、 /精度范围内的大浮点数与小浮点数相加10 d=d+111111.111; /精度范围内的大浮点数与小浮点数相加11 e=e+111111.111f; /精度范围外的大浮点数与小浮点数相加12 printf(a=%.16f , b=%.16fn,a,b); /输出单精度浮点型a,b13 printf(c=%.16lf , d=%.16lfn,c,d); /输出双精度浮点型c,d14 printf(e=%lfn,e); /输出双精度浮点型e15 return 0;142.1.2 浮点型浮点型例2.11 #include 2 int main()3 4 float a=0.00000678f, b
7、=0.00000123f;5 double c=0.00000678 , d=0.00000123;6 double e=100000000000000000000.0;7 a=a+111111.111f; /精度范围外的大浮点数与小浮点数相加8 b=b+111111.111f; /精度范围外的大浮点数与小浮点数相加9 c=c+111111.111; /精度范围内的大浮点数与小浮点数相加10 d=d+111111.111; /精度范围内的大浮点数与小浮点数相加11 e=e+111111.111f; /精度范围外的大浮点数与小浮点数相加12 printf(a=%.16f , b=%.16fn,a
8、,b); /输出单精度浮点型a,b13 printf(c=%.16lf , d=%.16lfn,c,d); /输出双精度浮点型c,d14 printf(e=%lfn,e); /输出双精度浮点型e15 return 0;a=111111.1093750000000000 , b=111111.1093750000000000c=111111.1110067800000000 , d=111111.1110012300100000e=100000000000000110000.000000程序运行屏幕152.1.3 字符型字符型C语言字符型分为有符号(signed char)和无符号(unsign
9、ed char)两种,其中signed书写时可以省略。字符型数据在内存中占用1个字节,采用二进制形式存储。162.1.3 字符型字符型字符型数据可以存储整型数值,有时也称为字节型。字符型数据存储整数时的内存形式与整型一样,只不过其数值范围要小得多。字符A在内存中的存储形式为172.1.3 字符型字符型【例2.2】字符型数据与整型数据的赋值与运算。182.1.3 字符型字符型例2.21 #include 2 int main()3 4 int i, j;5 char c1,c2;6 c1=a; /字符数据赋值给字符型7 c2=98; /整数数据赋值给字符型8 i=A; /字符数据赋值给整型9 j
10、=66; /整数数据赋值给整型10 printf(i=%d , j=%d , c1=%c , c2=%cn,i,j,c1,c2);11 printf(c1-32=%cn,c1-32); /字符型可以进行减法运算12 return 0;13 192.1.3 字符型字符型例2.21 #include 2 int main()3 4 int i, j;5 char c1,c2;6 c1=a; /字符数据赋值给字符型7 c2=98; /整数数据赋值给字符型8 i=A; /字符数据赋值给整型9 j=66; /整数数据赋值给整型10 printf(i=%d , j=%d , c1=%c , c2=%cn,
11、i,j,c1,c2);11 printf(c1-32=%cn,c1-32); /字符型可以进行减法运算12 return 0;13 i=65 , j=66 , c1=a , c2=bc1-32=A 程序运行屏幕202.2 常量常量常量(constant)是指程序中其值不能被修改的数据,分为字面常量和符号常量。从字面形式即可识别的常量称为字面常量(literal constant),例如64、3.1415926和A等。212.2.1 整型常量整型常量一个整型常量可以用3种不同的方式表示:(1)十进制整数。以非零十进制数19组成的整数,例如13579,-24680等。(2)八进制整数。以0开头和八
12、进制数07组成的整数,例如0,012,0177等。 012+12=? 029+29=?222.2.1 整型常量整型常量(3)十六进制整数。以0 x或0X开头和十六进制数09、AF或af组成的整数(字母大小写任意),例如0 x1234,0 xab,0 xCF等。232.2.1 整型常量整型常量整型常量从字面上区分数据类型的方法是:(1)整型常量默认的类型为int型。根据系统平台,若int和long型数据占用内存大小相同,则一个int型常量也是long型常量。若int和short型数据占用内存大小相同,则一个int型常量也是short型常量。(2)一个整数如果其值在范围内,则它是short型。24
13、2.2.1 整型常量整型常量(3)一个整数如果其值超出上述范围,但在范围内,则它是long型。(4)在一个整数值后面加一个字母l或L,则它是long型。例如123是int型,123L是long型。后缀符号一般用L而不用小写的l,避免与数字1混淆。(5)整数默认是signed型,在一个整数后面加一个字母u或U,则它是unsigned型。252.2.1 整型常量整型常量示例18 /十进制表示022 /八进制表示0 x12 /十六进制表示0 /signed int168 /signed int168U /unsigned int2147483647 /signed long-1L /signed l
14、ong65535Lu /unsigned long262.2.2 浮点型常量浮点型常量一个浮点型常量可以用两种不同的方式表示:(1)小数形式。由小数点、十进制整数和小数组成的浮点数,如1.234、-567.89等。整数和小数可以省略其中之一,但不能省略小数点,如.123、123.、0.0等。(2)指数形式,又称科学记数法表示。以f E n或f e n格式组成的浮点数,其中E或e表示以10为低的幂,n为指数且必须是整型,f可以是整数或小数。 1.2e3=1.2x103272.2.2 浮点型常量浮点型常量浮点型常量默认为double型。若在浮点数后面加一个字母f或F,则它是float型。若在浮点数后面加一个字母l或L,则它是long double型。示例f=1.23; /默认doublef=1.23f; /floatf=1.23L; /long double结束结束