C语言的语法基础 (2).ppt
《C语言的语法基础 (2).ppt》由会员分享,可在线阅读,更多相关《C语言的语法基础 (2).ppt(58页珍藏版)》请在三一办公上搜索。
1、2.1 基本数据类型2.2 基本输入、输出函数2.3 运算符和表达式,第二章 C语言的语法基础,2.1 基本数据类型2.1.1 标识符与基本数据类型1.标识符(identifier)标识符是一个名字,在C语言中指常量、变量、类型、语句、标号及函数的名称。C语言标识符有三类:关键字、预定义标识符和用户定义标识符。(1)关键字(43个):已被C系统所使用的标识符。(2)预定义标识符:C系统提供的库函数名和编译预处理命令等(3)用户标识符:用户根据需要在程序中用到的变量、符号常数、用户函数、标号等进行命名。命名规则:标识符只能由英文字母、下划线和数字组成,且只能由英文字母或下划线开头。标识符长度不能
2、超过32个字符,且不能与关键字相同;应避免与预定义标识符相同;标识符区分大小写。,2.基本数据类型(basic data types)C的基本数据类型如下:在程序中对用到的所有数据类型都必须指定其数据类型。,整型(int),字符型(char),实型(浮点型),枚举类型(enum),数组类型(),结构体类型(struct),共用体类型(union),单精度型(float),双精度型(double),指针类型(*),构造类型,基本类型,空类型(NULL),数据类型,2.1.2 常量与变量1.常量(constants)在程序运行过程中,其值不能被改变的量称为常量。C语言有整型常量、实型常量、字符型常
3、量、字符串常量和符号常量5种。如12、0、-3为整型常量,4.6、-1.23为实型常量,a、d为字符常量,“abcd”、“12hhd”为字符串常量。用标识符代表的常量称为符号常量。如#define PRICE 30,(1)整型常量 C语言整型常数可用以下三种形式表示:十进制整型。不由0开头,由09组成,前面可加正负号;如123,-456,0。八进制整数。以0开头,只能由07组成,前面可加正负号。如0123表示八进制数123,即182+281+380,-011表示八进制-11,即十进制-9 十六进制整数。以0 x(或X)开头,可以由09、字母a(或A)f(或F)组成,前面可加正负号。如0 x12
4、3等于十进制数的291。-0 x12等于十进制的-18。整型常数的类型:在一个整常数后加一字母u,则认为是无符号常数;在一个整常数后面加一个字母l或L,则认为是long int型常数。,(2)实型常量 实数又称浮点数,有两种表示形式:(1)十进制小数形式。它是由数字和小数点组成(注意必须有小数点)。如.123、123.、0.0、123.0。(2)指数形式。如123e3或123E3。但字母e(或E)之前必须有数字,且e后面的指数必须为整数(不能为空)。如e3、2.1e3.5、.e3、e等都不是合法的指数形式。在字母e(或E)之前的小数部分中。小数点左边应有1位(且只能有1位)非零的数字,称为“规
5、范化的指数形式”。实型常数的类型 许多C编译系统将实型常数作为双精度(double,占8个字节)来处理。可以在带小数点的数的后面加字母f或F来指定实型常数为单精度(float,占4个字节),加字母l或L来指定实型常数为长双精度(long double,占10个字节)。,(3)字符型常量 C的字符常数是用单引号括起来的字符。如a,x,A等。除了以上形式的字符常数外,C还允许用一种特殊形式的字符常数,就是以一个“”开头的字符系列,称为“转义字符”常用的以“”开头的特殊字符见下表:,例如:main()printf(“ab ctdeb101fgn”);printf(“ab crde12x41n”);运
6、行结果:ab c dAfg de c A,(4)字符串常数 字符常数是由一对单引号括起来的单个字符。字符串常数是一对双引号括起来的字符系列。如:“How do you do.”,“CHINA”,“a”,“$123.45”都是字符串常数。注意:字符常数a与字符串常数“a”是不同的,不能把“a”等字符串常数赋给一个字符变量。C规定:在每一个字符串的结尾加一个“字符串结束标志”即字符0,因此,字符串常数“a”在内存中是:字符串“a”实际上包含2个字符a和0,因而不能赋给只能容纳一个字符的字符变量。C语言没有专门的字符串变量,解决办法是使用字符数组。,A 0,(5)符号常数用标识符代表的常量称为符号常
7、量。习惯用大写字母表示可以用两种方法定义符号常数:利用宏定义#define定义符号常数,如:#define PI 3.14159#define ESC 27#define ID“102343-3852396-y3v4x5a”利用“const”定义符号常数,格式为:const 数据类型关键字 符号常数1=常数1,符号常数2=常数2,如:const int MAXINT=32767;const long int MAXLONG=2147483647;,2.变量(variables)其值可以改变的量称为变量。一个变量应该有一个名字即变量名,变量名只能由字母、数字和下划线三种字符组成,且第一个字符必须
8、为字母或下划线。一个变量在内存中占有一定的存储空间,这个存储空间内所存放的数据就是变量的值。变量的类型确定了该变量的性质、取值范围、占内存空间的大小以及所能参加运算的方式。C语言区分大小写字母。变量名一般为长度8的小写字母。变量定义的格式如下:数据类型关键字 如:int i,j,k;,Turbo C2.0基本数据类型关键字、所占内存字节数及取值范围,3.变量初始化(variables initialization)动态变量未经初始化,也未赋值,其值是不确定的。C语言允许:(1)先定义变量,再赋初值,如:float a,b,c;a=1.1;b=12.2;c=1.9;(或a=1.1,b=12.2,
9、c=1.9;)(2)在定义变量的同时赋初值,如:int a=3;float f=3.56;char c=a;int a=3,b=3,c=3;(3)对被定义的变量一部分赋初值,如:int a,b,c=3;int a=3,b,c;,2.1.3 内存的概念 计算机内存是由一片连续的存储单元组成,操作系统给每个单元编号,这个编号称为内存单元的地址。地址通常由一组连续的整数组成,编号小的称为内存低地址,编号大的称为内存高地址。每个单元占1个字节,即内存中每个字节有一个地址(编号)。如果定义了一个整型变量i:int i;i=10;i实际是占2个字节的一个内存地址名,这个地址中存放的内容是10。数据在内存中
10、实际存放情况如下:如果数值是负的,则在内存中存放它的补码。如存放-10情况如下:,有符号数的最高位表示符号位,符号位为0表示整数,符号位为1表示负数;无符号数表示的都是正数,其最高位不是符号位。如:内存中有二进制数1111 1111 1110 0111,把它看成是有符号整数时,其值为25;若把它视为无符号整数,则值为0 xffe7(即十进制65511)。字符变量的值即字符数据在内存中是以二进制形式存放字符的ASCII码。如:内存中有二进制数0100 0001,把它看成是字符类型时,其值为A,把它视为int类型时,其值为65。字符型数据和整型数据是通用的,可以混用(注意:字符数据只占一个字节)。
11、,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,再加1得-10的补码,*,2.2 基本输入输出函数2.2.1 格式输入函数和格式输出函数1.printf函数(格式输出函数)作用:向终端设备输出若干个任意类型的数据。一般格式:printf(格式控制,输出列表)如:printf(“%d,%cn”,i,c)其中:“格式控制”是用双引号括起来的字符串,包括普通字符(需原样输出的字符)和格式说明(由“%”和格式字符(一般为小写)组成,用于将输出的数据转换为指定的格式输出。注意:格式说明与输出项从左到右的数据类型必须一一匹配,否 则将输出错误结果。如printf(“%d,%dn”,123
12、,123.456);格式说明与输出项的个数必须相同。printf调用结束后返回一个函数值,其值等于输出项个数,每一个格式说明都必须用开头,以一个格式字符作为结束,在此之间根据需要可以插入“宽度说明”、左对齐符号“”、长度修饰符“l”和“L”等。不同类型的数据用不同的格式字符。常用的有以下几种:(1)d(或i)格式符:用于输出十进制整数(不能输出float或double)%d:按整型数据的实际长度输出。%md:用m指定输出字段的宽度,如果数据的实际位数小于m,则左端补空格(m为负时,右补空,下同),若大于m,则按实际位数输出。如printf(“%4d,%4d”,a,b)若a=123,b=1234
13、5,则输出为:123,12345%ld 或%Ld:输出长整型数据,也可用于输出int型数据(不能写成%dl)。可以指定输出宽度,如:long a=125790;printf(“%8ld”,a),(2)o格式符:以八进制形式输出整数(“%o”),对长整型可以用“%lo”格式输出,同样可以指定输出宽度(“%mo”或“%mlo”)。实际上是将内存中的数据每3位一组按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。如:int a=-1;printf(“%d,%o”,a,a);输出为:-1,177777(3)x(或X)格式符:以十六进制形式输出整数(“%x”)。对长整型
14、可以用“%lx”格式输出,同样可以指定输出宽度(“%mx”或“%mlx”)。实际上是将内存中的数据每4位一组按十六进制形式输出,因此输出的数值也不带符号,即将符号位也一起作为十六进制数的一部分输出。如:,int a=-1;printf(“%x,%o,%d”,a,a,a);输出为:ffff,177777,-1(4)u格式符:用于输出unsigned型数据(“%u”),即无符号数,以十进制形式输出,也可以“%mu”或“%mlu”。一个有符号整数也可以用%u格式输出;反之,一个 unsigned型数据也可以用%d格式输出。unsigned型数据也可以用%o或%x格式输出。如:main()unsign
15、ed int a=65535;int b=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b);运行结果为:a=-1,177777,ffff,65535 b=-2,177776,fffe,65534,(5)c格式符:用于输出一个字符(“%c”),可以指定输出宽度(“%mc”,m为正,字符前补空格,m为负,字符后补空格),也可以(“%mlc”无意义)。如果给定的输出值255,“则将低8位转换为字符输出。如:main()char c=a;int i=97;int j=97+256;printf(“%c,%dn”,c
16、,c);printf(“%c,%dn”,i,i);printf(“%c,%dn”,j,j);运行结果为:a,97 a,97 a,353,(6)s格式符:用于输出一个字符串(“%s”),可以指定输出宽度(“%ms”,若m串长,串左补空格,m为负,串右补空格),也可以(“%m.ns”,输出占m列,但只取字符串中左端n个字符,这n个字符输出在m列的右侧,左补空格),还可以(“%-m.ns”,输出占m列,但只取字符串中左端n个字符,这n个字符输出在m列的左侧,右补空格)。如果nm,则m自动取n值,即保证n个字符正常输出;如果n串长,则按实际串输出。如:main()printf(“%3s,%7.2s,%
17、.4s,%-5.3sn”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);运行结果:CHINA,CH,CHIN,CHI,(7)f格式符:用于输出实数,以小数形式输出。%f:整数部分全部如数输出,并输出6位小数(注意有效位数);如:main()float x,y;x=111111.111;y=222222.222;printf(“%f,%f,%f”,x,y,x+y);运行结果为:111111.109375,222222.218750,333333.328125 如:main()double x,y;printf(“%f”,x+y);运行结果为:3333333333333.333
18、010,%mf:指定输出的数据占m列,其中有6位小数。如果数值长度小于m,则左端补空;如果数值长度(整数位+7)大于m,则按实际输出(=8)。%m.nf:指定输出的数据占m列,其中有n位小数。如果数值长度小于m,则左端补空;如果数值长度(整数位+1+小数位n)大于m,则可能突破m列,输出宽度为整数位+1+小数位n。%-m.nf:与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。如:main()float f=123.456;printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);输出结果如下:123.456001 123.456001 123.46
19、123.46 123.46,(8)e(或E)格式符:以指数形式输出实数。%e:以13位宽度输出,其中指数部分占5位,1位整数位,6位小数位和1为小数点位。如:printf(“%e”,123.456);输出:1.234560e+002%me:若m6),则左端补空。%-m.ne:与%m.ne基本相同,只是使输出的数值向左端靠,右端补空格。如:float f=123.456;printf(“%e%10e%10.2e%.2e%-10.2en”,f,f,f,f,f);输出结果如下:1.234560e+0021.234560e+0021.23e+0021.23e+0021.23e+002,(9)g(或G)
20、格式符:用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。如:float f=123.468;printf(“%f%e%g”,f,f,f);输出如下:123.4680001.234680e+002123.468(10)在数据前面的多余空格处填以数字0。如:printf(“%010d,%010.2fn”,-123,12345.678);运行结果:000000123,0012345.68(11)在输出的八进制数加前导0,对输出的十六进制数加前导0 x。如:printf(“%#o,%#xn”,65,65);运行结果:0101,0 x41,几点说明
21、:一个格式说明以“%”开头,以d,o,x,u,c,s,f,e,g等9个格式字符之一为结束,中间可以插入附加格式字符l,L,m,n,-,.等;如果想输出字符“%”,可在“格式控制”字符串中用连续两个%表示。不同类型的数据应采用相应的格式字符输出,m只在实际长度小于m时才起作用,n一般都能得到执行。即首先考虑n的前提下,按实际长度输出,然后再考虑m,看是否要补空。,2.scanf函数(格式输入函数)一般格式:scanf(格式控制,地址列表)如:main()int a,b,c;scanf(“%d%d%d”,运行时输入输出如下:3 4 5 3,4,5 其中“%d%d%d”表示按十进制整数形式输入数据。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言的语法基础 2 语言 语法 基础
链接地址:https://www.31ppt.com/p-6503951.html