1、2022-11-11程序设计基础(C语言)wh1第第 2 2 章章基本数据类型和运算符基本数据类型和运算符2022-11-11程序设计基础(C语言)wh2n程序是计算机对数据进行操作的步骤,即数程序是计算机对数据进行操作的步骤,即数据与操作构成了程序的两个要素。其中数据据与操作构成了程序的两个要素。其中数据是程序的必要组成部分,也是程序处理的对是程序的必要组成部分,也是程序处理的对象。在程序中,经常会使用各种数据。象。在程序中,经常会使用各种数据。C C语言语言规定,在程序中使用的每个数据都属于一种规定,在程序中使用的每个数据都属于一种类型。类型。2022-11-11程序设计基础(C语言)wh
2、3数据类型数据类型基本类型基本类型(简单类型简单类型)构造类型构造类型其他类型其他类型整型整型 实型实型(浮点型浮点型)字符型字符型(char)(char)枚举型枚举型(enum(enum)数组型数组型结构型结构型联合型联合型短整型短整型(short int(short int)整型整型(int(int)长整型长整型(long int(long int)单精度型单精度型(float)(float)双精度型双精度型(double)(double)指针型指针型空类型空类型图2-1 C语言数据类型不同的运算不同的运算符可产生不符可产生不同的表达式同的表达式 2022-11-11程序设计基础(C语言)
3、wh42.1 C2.1 C语言的词汇语言的词汇 2.2 2.2 数据基本类型数据基本类型 2.3 2.3 运算符和表达式运算符和表达式 2.4 2.4 数据类型的转换数据类型的转换2022-11-11程序设计基础(C语言)wh52.1 C2.1 C语言的词汇语言的词汇1 1C C语言字符集语言字符集定义:组成定义:组成C C语言源程序代码的基本字符,它是构语言源程序代码的基本字符,它是构成成C C语言的基本元素。语言的基本元素。C C语言使用的基本字符:语言使用的基本字符:大小写英文字符:大小写英文字符:A AZ Z,a az z数字字符:数字字符:0 09 9特殊字符:特殊字符:+=+=_(
4、_(下划线下划线)()()*&%&%#!,.;:?”|/#!,.;:?”|/不可打印的字符:空格、换行符、制表符、响铃不可打印的字符:空格、换行符、制表符、响铃符符2022-11-11程序设计基础(C语言)wh62 2关键字关键字定义:具有特定含义的、专门用来说明C语言的特定成分的一类单词。C语言的关键字都用小写字母书写,不能用大写字母书写。在C89标准中共有32个关键字:auto break case char const continue defaultdo double else enum extern float registergoto signed int long return
5、for shortif sizeof static struct switch typedef unionunsigned void volatile while 在新的C99标准中,又增加了5个关键字:_Bool _Complex _imaginary inline restrict2022-11-11程序设计基础(C语言)wh72.2.标识符标识符定义:在定义:在C C语言中用于标识名字的有效字符序列。语言中用于标识名字的有效字符序列。C C语言对标识符作如下规定:语言对标识符作如下规定:(1)(1)标识符的第一个字符必须是英文字母或下划线标识符的第一个字符必须是英文字母或下划线(2)(2
6、)如果第一个字符后面还有字符序列,则它应是如果第一个字符后面还有字符序列,则它应是英文字母、下划线符或数字组成的序列。英文字母、下划线符或数字组成的序列。(3)(3)标识符中的英文字母大小写是有区别的。如标标识符中的英文字母大小写是有区别的。如标识符识符abcabc与标识符与标识符ABCABC不相同。不相同。2022-11-11程序设计基础(C语言)wh8试判断下列标识符正确与否:试判断下列标识符正确与否:abcdabcd A A?AbcdAbcd 2abc 2abc _Abcd_Abcd a ba b _2a3 _2a3 yes/noyes/norr 2022-11-11程序设计基础(C语言
7、)wh94.4.保留标识符保留标识符 保留标识符是系统保留的一部分标识符,通保留标识符是系统保留的一部分标识符,通常用于系统定义和标准库函数的名字。例如,常用于系统定义和标准库函数的名字。例如,以下划线开始的标识符通常用于定义系统变以下划线开始的标识符通常用于定义系统变量,不能使用把这些标识符来定义自己的变量,不能使用把这些标识符来定义自己的变量。虽然它们也是合法的标识符,但是用它量。虽然它们也是合法的标识符,但是用它们来做一般标识符可能会出现运行错误。们来做一般标识符可能会出现运行错误。2022-11-11程序设计基础(C语言)wh105.5.注释注释在在c c语言程序中,括在定界符语言程序
8、中,括在定界符“/*”“”“*/”/”之间的内之间的内容是注释。注释不是程序代码,只是一种对程序解容是注释。注释不是程序代码,只是一种对程序解释说明的标注,编译程序把注释作为空白符跳过而释说明的标注,编译程序把注释作为空白符跳过而不予处理。注释不允许嵌套。不予处理。注释不允许嵌套。例如:例如:/*学生成绩管理程序学生成绩管理程序*/、/*My c programMy c program*/2022-11-11程序设计基础(C语言)wh11 2.2.1 2.2.1 常量和变量常量和变量2.2.2 2.2.2 整型常量和实型常量整型常量和实型常量2.2.3 2.2.3 字符常量和字符串常量字符常量
9、和字符串常量2.2.4 2.2.4 符号常量符号常量2.2.5 2.2.5 整型变量整型变量 2.2.6 2.2.6 实型变量实型变量 2.2.7 2.2.7 字符变量字符变量2.2.8 2.2.8 用用charchar定义小整数定义小整数2022-11-11程序设计基础(C语言)wh122.2.1 2.2.1 常量和变量常量和变量1.1.常量常量常量:在程序执行的整个过程中其值不能改变的量。例如常量:在程序执行的整个过程中其值不能改变的量。例如1 1,3.53.5都是常量。都是常量。字面常量:字面常量:直接以值的形式出现的常量。直接以值的形式出现的常量。符号常量:符号常量:在一个程序在一个程
10、序(或程序的一部分或程序的一部分)中指定的用标识中指定的用标识符代表的常量,从字面上不能直接看出其类型和值。符代表的常量,从字面上不能直接看出其类型和值。根据其书写形式,可以区分为不同类型的常量,如整型根据其书写形式,可以区分为不同类型的常量,如整型常量、实型常量、字符常量、字符串常量等常量、实型常量、字符常量、字符串常量等 。2022-11-11程序设计基础(C语言)wh13编写求圆面积和周长的程序编写求圆面积和周长的程序1:#includestdio.h#include void main()void main()double area(double r),circumference(do
11、uble double area(double r),circumference(double r);r);printf(“area printf(“area=%fn”,area(2.0);=%fn”,area(2.0);printf(“circumference=%fn printf(“circumference=%fn”,circumference(2.0);”,circumference(2.0);double area(doubledouble area(double r)/r)/*计算圆面积计算圆面积*/return(3.14159 return(3.14159*r r*r);r);
12、double circumference(double r)/double circumference(double r)/*计算周长计算周长*/return(2.0 return(2.0*3.141593.14159*r);r);若定义一个符号代表半径可提高程序的可读性若定义一个符号代表半径可提高程序的可读性2022-11-11程序设计基础(C语言)wh14#includestdio.h#include#define PI 3.14159 /#define PI 3.14159 /*定义符号常数定义符号常数*/#define R 2.0 /#define R 2.0 /*定义符号常数定义符号
13、常数*/void main()void main()double area(double r),circumference(double double area(double r),circumference(double r);r);printf(“area=%fn”,area(R printf(“area=%fn”,area(R););printf(“circumference=%fn”,circumference(R printf(“circumference=%fn”,circumference(R););double area(doubledouble area(double r)/
14、r)/*计算圆面积计算圆面积*/return(PI return(PI*r r*r);r);double circumference(double r)/double circumference(double r)/*计算周长计算周长*/return(2.0 return(2.0*PIPI*r);r);编写求圆面积和周长的程序编写求圆面积和周长的程序2 2:l定义符号常量定义符号常量的一种方法是使的一种方法是使用用#define#define命令,命令,它是一种它是一种“预编预编译命令译命令”,在编在编译整个程序之前译整个程序之前系统会先对程序系统会先对程序中的预编译命令中的预编译命令进行处理
15、。上面进行处理。上面#define#define命令的命令的作用是在预编译作用是在预编译时将程序中凡出时将程序中凡出现现PIPI的地方全部的地方全部以以3.14159263.1415926代代替替,凡出现凡出现R R的地的地方一律以方一律以2.02.0代代替替.2022-11-11程序设计基础(C语言)wh15 符号常量符号常量 符号常量符号常量是一种用标识符命名的常量。例如,用标识是一种用标识符命名的常量。例如,用标识符符PIPI代替代替3.141593.14159。为了确定这种。为了确定这种替代关系替代关系,必须先对符号,必须先对符号常量进行定义。有两种对符号常量进行定义的方法,常量进行定
16、义。有两种对符号常量进行定义的方法,n一种是一种是宏定义宏定义:#define PI 3.14159#define PI 3.14159 n另一种是另一种是constconst常量常量:const float pi=3.14159;const float pi=3.14159;注意注意:定义定义constconst常量要以分号结束常量要以分号结束。这种方法有点类似于。这种方法有点类似于变量声明,但是前面加有变量声明,但是前面加有constconst关键字,并且在声明时必须关键字,并且在声明时必须初始化。初始化。2022-11-11程序设计基础(C语言)wh162.2.变量变量变量:变量:在程序
17、执行的过程中其值可以改变的量。在程序执行的过程中其值可以改变的量。变量都有三个特征:变量都有三个特征:它有一个变量名,变量名选用标识符。例如,可以用它有一个变量名,变量名选用标识符。例如,可以用circumcircum,areaarea,sum_1sum_1等作为变量名。等作为变量名。变量有类型之分。例如,整型变量、实型变量、字符变量有类型之分。例如,整型变量、实型变量、字符型变量等。型变量等。变量可以存放值。变量可以存放值。2.2.1 2.2.1 常量和变量常量和变量2022-11-11程序设计基础(C语言)wh172.2.1 2.2.1 常量和变量常量和变量 变量的值变量的值在在程序运行程
18、序运行中的中的可变性可变性可以通过可以通过赋值语句赋值语句表示。表示。例如:例如:i=3;i=3;如果在程序中连续执行两个赋值语句:如果在程序中连续执行两个赋值语句:i=3;i=3;i=0i=0;执行结果?执行结果?另:另:C C程序中的所有变量在使用之前,必须先对它进行声明。程序中的所有变量在使用之前,必须先对它进行声明。声明变量包括为变量取名和指定变量类型。声明变量包括为变量取名和指定变量类型。例如例如 float i,jfloat i,j;注意:不允许在程序的同一处将同一变量声明为不同类型。注意:不允许在程序的同一处将同一变量声明为不同类型。2022-11-11程序设计基础(C语言)wh
19、18表表2-1 2-1 基本数据类型和类型名关键字对应表基本数据类型和类型名关键字对应表类别类别类型类型类型名关键字类型名关键字简写形式简写形式字符型字符型字符型字符型charcharcharchar有符号字符型有符号字符型signed charsigned charsigned charsigned char无符号字符型无符号字符型unsigned charunsigned charunsigned charunsigned char整型整型基本整型基本整型intintintint有符号基本整型有符号基本整型signed intsigned intsigned intsigned int短整
20、型短整型short intshort intshortshort有符号短整型有符号短整型signed short intsigned short intsigned shortsigned short长整型长整型long intlong intlonglong有符号长整型有符号长整型signed long intsigned long intsigned longsigned long无符号整型无符号整型unsigned intunsigned intunsignedunsigned无符号短整型无符号短整型unsigned short intunsigned short intunsigned
21、 shortunsigned short无符号长整型无符号长整型unsigned long intunsigned long intunsigned longunsigned long实型实型单精度实型单精度实型floatfloatfloatfloat单精度实型单精度实型floatfloatlong floatlong float双精度实型双精度实型doubledoubledoubledouble双精度长实型双精度长实型long doublelong doublelong doublelong double2022-11-11程序设计基础(C语言)wh193.3.变量初始化变量初始化定义:定义
22、:在声明变量的同时给它赋一个初始值。在声明变量的同时给它赋一个初始值。例如:例如:intint a=9,b=9;a=9,b=9;float c=1.25;float c=1.25;intint d=a+b d=a+b;说明:说明:对于几个变量赋同一初值对于几个变量赋同一初值,不可写成不可写成:int:int a=b=9 a=b=9;初值必须是常量或操作数是常量的算术表达式;初值必须是常量或操作数是常量的算术表达式;初始化不是在编译阶段完成的初始化不是在编译阶段完成的,是在程序运行时执行本是在程序运行时执行本函数时赋以初值的。函数时赋以初值的。2022-11-11程序设计基础(C语言)wh204
23、.4.数据输出的概念数据输出的概念 printf()函数:按照指定的格式把需要输出的数据在标准输出设备(通常是终端显示器)上输出。一般格式:printf(输出格式控制,输出数据表列);其中:“输出格式控制”是用双引号括起来的字符串,也称“转换控制字符串”。它包括两种形式的信息:一种是用于说明的信息;另一种是带有前置百分号(%)的格式转换说明,由和格式字符组成,如d、%c等,它的作用是将输出的数据转换为指定的格式输出。“输出数据表列”表示需要输出的一些数据,各数据之间须用逗号隔开。输出数据的个数应与输出格式控制中的格式转换说明的个数相等,而且在顺序上要一一对应。2022-11-11程序设计基础(
24、C语言)wh21【例【例2-22-2】一个程序举例。一个程序举例。/*c2_2.cc2_2.c*/#include stdio.h#include void main()void main()int int i=5,j;i=5,j;j=2;j=2;printf(i=%d,j=%d,i,j printf(i=%d,j=%d,i,j););程序分析:程序分析:程序以程序以void main()void main()开始,后面跟有一对花括号,开始,后面跟有一对花括号,花括号中包含数据声明部分和语句部分。凡是语句中使用花括号中包含数据声明部分和语句部分。凡是语句中使用的变量,都必须在数据声明部分进行声
25、明。本程序中声明的变量,都必须在数据声明部分进行声明。本程序中声明了了i i和和j j两个整型变量并对变量两个整型变量并对变量i i进行初始化,接着对进行初始化,接着对j j赋值赋值为为2 2,最后输出,最后输出i i和和j j的值。的值。程序运行的结果:程序运行的结果:i=5,j=2i=5,j=22022-11-11程序设计基础(C语言)wh221.1.整型常量整型常量十进制整型常量十进制整型常量八进制整型常量八进制整型常量十六进制整型常量十六进制整型常量2.2.2 2.2.2 常量常量2022-11-11程序设计基础(C语言)wh23.十进制整型常量十进制整型常量常量只能出现常量只能出现0
26、-90-9的数字的数字可带正、负号可带正、负号多个数字的常量前不能以多个数字的常量前不能以0 0开头。开头。例如:例如:0 1 321 0 1 321 12 12 2022-11-11程序设计基础(C语言)wh24.八进制整型常量八进制整型常量八进制数字串以数字八进制数字串以数字0 0开头开头其中数字为其中数字为0-70-7。例如:例如:0111 (0111 (十进制十进制73)73)011 (011 (十进制十进制9)9)0123 (0123 (十进制十进制83)83)07777 (07777 (十进制十进制4095)4095)2022-11-11程序设计基础(C语言)wh25.十六进制整型
27、常量十六进制整型常量十六进制数字串以0 x或0X开头(即以0 x或0X作为十六进制数的前缀)每个数字可以是09、af或AF中的数字或英文字母。例如:0 x11(十进制17)0Xa5(十进制165)0 x5a(十进制90)2022-11-11程序设计基础(C语言)wh26n实型常量有两种表示形式:实型常量有两种表示形式:2.2.实型常量实型常量 十进制小数形式:十进制小数形式:指数形式:指数形式:2022-11-11程序设计基础(C语言)wh27 1.1.十进制小数形式十进制小数形式 n包含一个小数点的十进制数字串包含一个小数点的十进制数字串n小数点前或后可以没有数字小数点前或后可以没有数字n小
28、数点前或后不能同时没有数字小数点前或后不能同时没有数字例如:例如:3.141593.14159、.23.23、23.023.0、23.23.、0.00.0,-9.0-9.02022-11-11程序设计基础(C语言)wh28 2.2.指数形式指数形式 n由尾数和指数两部分组成。尾数在前,指数(整数)在后,尾数形式上与十进制小数形式相同,指数由代表10的符号e/E以及阶码组成,阶码必须是整数。n指数形式实型常量由数字、小数点、正(或负)号和字母e(或E)组成。n格式:n尾数 e(或E)+(或-)阶码相当于数学中幕底数10可带符号的整数指数十进制小数形式的常量或者十进制整型常量2022-11-11程
29、序设计基础(C语言)wh29例如:例如:1e241e24(表示数值(表示数值10241024)0.314159e+10.314159e+1(表示数值(表示数值0.3141590.314159101101)23.0E-1 23.0E-1(表示数值(表示数值232310-110-1)下面是不正确的实型常量:下面是不正确的实型常量:e2e2(缺少十进制小数形式部分)(缺少十进制小数形式部分)3E3E(缺少阶码)(缺少阶码)4.e4.14.e4.1(不是整数阶码)(不是整数阶码)2022-11-11程序设计基础(C语言)wh303.3.字符常量字符常量普通普通字符常量字符常量:用一对用一对单引号单引号
30、括在其中的一个字符。括在其中的一个字符。例如:例如:a a、AA、yy、YY都是字符常量。都是字符常量。注意:注意:单引号中的字符不能是单引号或反斜杠,单引号中的字符不能是单引号或反斜杠,即即 、不是合法的字符常量。不是合法的字符常量。2022-11-11程序设计基础(C语言)wh31转义字符转义字符转转 义义 字字 符符意意 义义ASCIIASCII码值(十进制)码值(十进制)aa响铃(响铃(BELBEL,turbo C 2.0turbo C 2.0不支持)不支持)007007nn换行,将当前光标移到下一行行首换行,将当前光标移到下一行行首010010tt横向跳格,光标跳到下一个制表位横向跳
31、格,光标跳到下一个制表位009009vv竖向跳格竖向跳格011011bb退格退格,光标移到前一列,光标移到前一列008008rr回车,光标移到本行的行首回车,光标移到本行的行首013013ff换页,将光标移到下一页的页首换页,将光标移到下一页的页首012012反斜杠字符反斜杠字符“”092092单撇号字符单撇号字符“”“”039039 双撇号字符双撇号字符“”“”034034?问号字符问号字符“?”?”06306300空字符(空字符(NULLNULL)000000dddddd任意字符(任意字符(1 13 3位八进制数所代表的字符)位八进制数所代表的字符)xhhxhh任意字符任意字符(1(12
32、2位十六进制数所代表的字符位十六进制数所代表的字符)表表2-2 C2-2 C语言中常用的转义字符语言中常用的转义字符 2022-11-11程序设计基础(C语言)wh32说明:说明:字符常量中使用单引号、双引号和反斜杠时,字符常量中使用单引号、双引号和反斜杠时,必须使用转义字符表示,即在这些字符前加上必须使用转义字符表示,即在这些字符前加上反斜杠;反斜杠;转义字符中只能用小写字母,每个转义字符只转义字符中只能用小写字母,每个转义字符只看作一个字符。看作一个字符。vv竖向跳格和竖向跳格和ff换页符对屏幕没有任何影响,换页符对屏幕没有任何影响,但会影响打印机执行响应操作。但会影响打印机执行响应操作。
33、在在C C语言程序中,使用不可打印字符时,通常语言程序中,使用不可打印字符时,通常用转义字符表示。用转义字符表示。2022-11-11程序设计基础(C语言)wh33/*打印人民币符号打印人民币符号“”“”*/#includestdio.h#include void main()void main()printf(“Yb printf(“Yb=n”);=n”);这一输出只能在打印机上实现,而不能在显示器上实现。这一输出只能在打印机上实现,而不能在显示器上实现。2022-11-11程序设计基础(C语言)wh34n字符串常量字符串常量:用一对:用一对双引号(双引号()括起来的括起来的零个或多个字符序
34、列。零个或多个字符序列。n例如:例如:“HelloHello!”、“Welcome youWelcome you!”、“Windows”Windows”、“”“”等等4.4.字符串常量字符串常量2022-11-11程序设计基础(C语言)wh35字符串常量的输出:字符串常量可以使用 printf 函数直接输出;或使用带前置百分号(%)的格式转换说明“%s”。例如:printf(Hello!);输出结果为:Hello!或:printf(%s,Hello!);输出字符串:Hello!直接输出格式说明符2022-11-11程序设计基础(C语言)wh36字符串常量与字符常量的比较字符串常量与字符常量的比
35、较:从形式上从形式上,字符常量使用单引号,而字符串常量使用,字符常量使用单引号,而字符串常量使用双引号。双引号。从内部存储来看从内部存储来看,编译程序在每个字符串的尾部自动,编译程序在每个字符串的尾部自动加上了一个空字符加上了一个空字符NULL(NULL(即即0)0)作为字符串的结作为字符串的结束标志。束标志。例如:字符串常量例如:字符串常量“a”a”的存储形式是:的存储形式是:a 02022-11-11程序设计基础(C语言)wh37【例【例2-32-3】一个程序举例。一个程序举例。/*c2_3.cc2_3.c*/#include stdio.h#include void main()void
36、 main()printf(Good printf(Good morning!n);morning!n);printf(Good0morning!n);printf(Good0morning!n);程序运行后的输出结果:程序运行后的输出结果:Good morning!Good morning!GoodGood注:在写字符串注:在写字符串时不必额外加时不必额外加“0”0”,系统会,系统会自动在字符串的自动在字符串的末尾加上。末尾加上。2022-11-11程序设计基础(C语言)wh382.2.32.2.3变量变量1 1整型变量整型变量整型变量的类型整型变量的类型基本型:类型说明符为int,其取值为
37、基本整常数。短整量:类型说明符为short int。长整型:类型说明符为long int或long,其取值为长整常数。无符号型:类型说明符为unsigned。无符号基本型:类型说明符为unsigned int或unsigned。无符号短整型:类型说明符为unsigned short无符号长整型:类型说明符为unsigned long2022-11-11程序设计基础(C语言)wh39整型变量的声明整型变量的声明整型变量声明的一般格式:类型说明符类型说明符 变量名标识符,变量名标识符,变量名标识符,变量名标识符,.;.;例如:int a;/*声明a为整型变量*/int a,b,c;/*声明a,b,
38、c为整型变量*/long a,b;/*声明a,b为长整型变量*/unsigned a,b;/*声明a,b为无符号整型变量*/2022-11-11程序设计基础(C语言)wh40在书写变量说明时,应注意以下几点:在书写变量说明时,应注意以下几点:允许在一个类型说明符后,说明多个相同类型允许在一个类型说明符后,说明多个相同类型的变量,但各变量名之间须用逗号分隔。类型的变量,但各变量名之间须用逗号分隔。类型说明符与变量名之间至少应用一个空格间隔。说明符与变量名之间至少应用一个空格间隔。最后一个变量名之后必须以最后一个变量名之后必须以“;”;”号结尾。号结尾。变量说明必须放在变量使用之前。一般放在函变量
39、说明必须放在变量使用之前。一般放在函数体的开头部分。数体的开头部分。2022-11-11程序设计基础(C语言)wh41nC C语言中一般使用函数语言中一般使用函数printfprintf()()进行输出。进行输出。nprintfprintf函数的功能:按照指定的格式把需要输函数的功能:按照指定的格式把需要输出的数据在标准输出设备(通常是终端显示器)出的数据在标准输出设备(通常是终端显示器)上输出。上输出。n一般格式:一般格式:printfprintf(输出格式控制,输出数据表列输出格式控制,输出数据表列););(3 3)整型变量的输出)整型变量的输出2022-11-11程序设计基础(C语言)w
40、h42 C语言标准没有具体规定为整型变量分配的存储空间(字节数)的最大字节数。对于int类型变量,有的是2字节,有的是4字节,等等。例如,一个占用2个字节的int类型变量,执行赋值语句 i=6;则这个值就存储在这2个字节中。30 0000000 0000 0011变量i的存储内容 intint i ii=3变量i的二进制形式存储两个字节的int变量2022-11-11程序设计基础(C语言)wh43【例【例2-52-5】输出所使用的计算机的输出所使用的计算机的C C语言中的语言中的intint和和long long intint类型变量分配的字节数。类型变量分配的字节数。程序如下:程序如下:/*
41、c2_5.cc2_5.c*/#include stdio.h#include void main()void main()printf(“Type int printf(“Type int has a size of%u byte,has a size of%u byte,sizeof(int,sizeof(int););printf(Type long int has a size of%u printf(Type long int has a size of%u byte.,sizeof(longbyte.,sizeof(long););程序运行结果:程序运行结果:Type intType
42、 int has a size of 2 byte,Type long has a size of 4 has a size of 2 byte,Type long has a size of 4 byte.byte.2022-11-11程序设计基础(C语言)wh44 变量的字节个数决定变量存储值的范围。变量的字节个数决定变量存储值的范围。因此,在选择因此,在选择intint类型的变量时,必须考虑该变量所能类型的变量时,必须考虑该变量所能存放的最大值和最小值。如果变量的取值可能超过它的最大存放的最大值和最小值。如果变量的取值可能超过它的最大范围,则要考虑选择其他的类型,否则可能发生溢出的错误。
43、范围,则要考虑选择其他的类型,否则可能发生溢出的错误。例如例如:(按照(按照2 2字节的字节的intint类型(类型(32768327683276732767)考虑)考虑)int i,jint i,j;i=30000;i=30000;j=40000;j=40000;j=40000j=40000超出了整型变量的最大取值范围,结果将产生溢出。超出了整型变量的最大取值范围,结果将产生溢出。2022-11-11程序设计基础(C语言)wh452.2.实型变量实型变量实型变量的类型实型变量的类型单精度型:类型说明符为单精度型:类型说明符为floatfloat,其数值范围为,其数值范围为3.4E-383.4
44、E-38到到3.4E+383.4E+38,有效数字为七位。,有效数字为七位。双精度型:类型说明符为双精度型:类型说明符为doubledouble,其数值范围为,其数值范围为1.7E-3081.7E-308到到1.7E+3081.7E+308,有效数字为十六位。,有效数字为十六位。长双精度型:类型说明符为长双精度型:类型说明符为long doublelong double。2022-11-11程序设计基础(C语言)wh46实型变量的声明实型变量的声明实型变量是用于存放实数值的变量。实型变量声明的一般格式:类型说明符类型说明符 变量名标识符,变量名标识符,变量名标识符,变量名标识符,.;.;例如:
45、float x,y;/*声明x,y为单精度实型变量*/double a,b,c;/*声明a,b,c为双精度实型变量*/2022-11-11程序设计基础(C语言)wh47实型变量的输出实型变量的输出n实型变量的输出使用实型变量的输出使用printfprintf函数。函数。n使用使用printfprintf函数输出实型变量时,其格式与输出函数输出实型变量时,其格式与输出整型变量相似。有所不同的是,实型变量格式说整型变量相似。有所不同的是,实型变量格式说明为明为“%f”%f”或或“%lf”%lf”。#includestdio.h#include void main()void main()float
46、 a=1.0;float a=1.0;printf(“a=%f”,a printf(“a=%f”,a););例如:例如:2022-11-11程序设计基础(C语言)wh48【例【例2-62-6】执行如下执行如下C C程序:程序:/*c2_6.cc2_6.c*/#include stdio.h#include void main()void main()float a;float a;a=30.456;a=30.456;printf(a=%f a=%5.2f a=%e,a,a,a printf(a=%f a=%5.2f a=%e,a,a,a););2022-11-11程序设计基础(C语言)wh49
47、程序分析:程序分析:u实型类型变量用实型类型变量用“%f”%f”格式输出时,其输出的小数位数格式输出时,其输出的小数位数占六位。占六位。u程序中的程序中的“%5.2f”%5.2f”,5 5表示数的输出总宽度(占几个字表示数的输出总宽度(占几个字符的位置),符的位置),2 2表示该数的小数位数。表示该数的小数位数。u“%e”%e”表示按指数形式输出一个实型类型变量的值。表示按指数形式输出一个实型类型变量的值。程序运行结果:程序运行结果:a=30.455999 a=30.46 a=3.04560e+01a=30.455999 a=30.46 a=3.04560e+012022-11-11程序设计基
48、础(C语言)wh503 3字符型变量字符型变量n字符变量的类型说明符是字符变量的类型说明符是charchar。字符型变量声明。字符型变量声明的的格式格式如下:如下:char char 变量名变量名,变量名变量名,;n例如:例如:char a;char a;/*声明向声明向a a为字符型变量为字符型变量*/char a,b,cchar a,b,c;/*声明声明a,b,ca,b,c为字符型变量为字符型变量*/2022-11-11程序设计基础(C语言)wh51 字符变量:可以使用赋值语句将字 符常量赋给字符变量。例如:例如:c=A例如:例如:c=“string”字符变量:不能用字符串常量赋给 字符变
49、量。字符串常量字符常量 65变量变量c c的存储单元的存储单元用字符常量对字符变量赋值时用字符常量对字符变量赋值时,也可也可以用以用ASCIIASCII码值代表对应的字符常量码值代表对应的字符常量赋给字符变量赋给字符变量 c=65c=652022-11-11程序设计基础(C语言)wh52字符变量的值字符变量的值通常使用通常使用printfprintf()()函数以两种形式输出函数以两种形式输出:以字符本身的形式以字符本身的形式输出,使用格式转换说明输出,使用格式转换说明“%c”;%c”;以整型量形式以整型量形式输出,使用格式转换说明输出,使用格式转换说明“%d”%d”。#include voi
50、d main()char ch;ch=a;printf(“%c”,chn);printf(%d,ch);2022-11-11程序设计基础(C语言)wh53【例【例2-72-7】执行如下程序。执行如下程序。/*c2_7.c c2_7.c*/#include stdio.h#include void main()void main()char c1,c2,c3;char c1,c2,c3;unsigned char c4;unsigned char c4;c1=a;c1=a;c2=A;c2=A;c3=98;c3=98;c4=66;c4=66;printf(c1=%c,c2=%c,c3=%c,c4=