第2章C语言的语法基础
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A \0
字符串“a”实际上包含2个字符‘a’和‘\0’,因而不能赋给只 能容纳一个字符的字符变量。 C语言没有专门的字符串变量,解决办法是使用字符数组。
(5)符号常数 用标识符代表的常量称为符号常量。习惯用大写字母表示 可以用两种方法定义符号常数: ①利用宏定义#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;
②在一个整常数后面加一个字母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位)非 零的数字,称为“规范化的指数形式”。 实型常数的类型 许多C编译系统将实型常数作为双精度(double,占8个字节 )来处理。可以在带小数点的数的后面加字母f或F来指定实 型常数为单精度(float,占4个字节),加字母l或L来指定实 型常数为长双精度(long double,占10个字节)。
在程序中对用到的所有数据类型都必须指定其数据类型。
2.1.2 常量与变量
1. 常量(constants) 在程序运行过程中,其值不能被改变的量称为常量。 C语言有整型常量、实型常量、字符型常量、字符串常量和 符号常量5种。 如12、0、-3为整型常量,4.6、-1.23为实型常量,‘a’、‘d’ 为字符常量,“abcd”、 “ 12hhd”为字符串常量。 用标识符代表的常量称为符号常量。 如 #define PRICE 30
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()
{unsigned int a=65535;
int b=-2; printf(“a=%d,%o,%x,%u\n”,a,a,a,a); printf(“b=%d,%o,%x,%u\n”,b,b,b,b); } 运行结果为: a=-1,177777,ffff,65535 b=-2,177776,fffe,65534
(6)s格式符:用于输出一个字符串(“%s”),可以指定输出宽度 (“%ms”, 若m<串长,按实际串输出;m为正且>串长,串左补空格 ,m为负,串右补空格),也可以(“%m.ns”,输出占m列,但只取字符 串中左端n个字符,这n个字符输出在m列的右侧,左补空格),还 可以(“%-m.ns”,输出占m列,但只取字符串中左端n个字符,这n个 字符输出在m列的左侧,右补空格)。如果n>m,则m自动取n值,即 保证n个字符正常输出;如果n>串长,则按实际串输出。如: main() {printf(“%3s,%7.2s,%.4s,%-5.3s\n”, “CHINA”, “CHINA”, “CHINA”, “CHINA”);} 运行结果:CHINA, CH,CHIN,CHI
2.2 基本输入输出函数
2.2.1 格式输入函数和格式输出函数
1.printf函数(格式输出函数) 作用:向终端设备输出若干个任意类型的数据。一般格式: printf(格式控制,输出列表) 如:printf(“%d,%c\n”,i,c) 其中:“格式控制”是用双引号括起来的字符串,包括普通字符( 需原样输出的字符)和格式说明(由“%”和格式字符(一般为小写) 组成,用于将输出的数据转换为指定的格式输出。 注意:①格式说明与输出项从左到右的数据类型必须一一匹配,否 则将输出错误结果。如printf(“%d,%d\n”,123,123.456); ②格式说明与输出项的个数必须相同。 ③printf调用结束后返回一个函数值,其值等于输出项个数
2. 变量(variables) 其值可以改变的量称为变量。一个变量应该有一个名字即变 量名,变量名只能由字母、数字和下划线三种字符组成,且 第一个字符必须为字母或下划线。一个变量在内存中占有一 定的存储空间,这个存储空间内所存放的数据就是变量的值 。变量的类型确定了该变量的性质、取值范围、占内存空间 的大小以及所能参加运算的方式。C语言区分大小写字母。 变量名一般为长度8的小写字母。 变量定义的格式如下:
*
有符号数的最高位表示符号位,符号位为0表示整数,符号位为 1表示负数;无符号数表示的都是正数,其最高位不是符号位 。如:内存中有二进制数1111 1111 1110 0111,把它看成是有 符号整数时,其值为-25;若把它视为无符号整数,则值为 0xffe7(即十进制65511)。 字符变量的值即字符数据在内存中是以二进制形式存放字符的 ASCII码。如:内存中有二进制数0100 0001,把它看成是字 符类型时,其值为‘A’,把它视为int类型时,其值为65。 字符型数据和整型数据是通用的,可以混用(注意:字符数据 只占一个字节)。
i 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
如果数值是负的,则在内存中存放它的补码。如存放-10情况 如下:
10的原码
取反
再加1得 -10的补码
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
第二章 C语言的语法基础
2.1 基本数据类型
2.2 基本输入、输出函数
2.3 运算符和表达式
2.1 基本数据类型
2.1.1 标识符与基本数据类型
1.标识符(identifier) 标识符是一个名字,在 C 语言中指常量、变量、类型、语句 、标号及函数的名称。 C 语言标识符有三类:关键字、预 定义标识符和用户定义标识符。 (1)关键字(43个): 已被C系统所使用的标识符。 (2)预定义标识符:C系统提供的库函数名和编译预处理命令等 (3)用户标识符:用户根据需要在程序中用到的变量、符号常数 、用户函数、标号等进行命名。命名规则: ①标识符只能由英文字母、下划线和数字组成,且只能由英文 字母或下划线开头。 ②标识符长度不能超过32个字符,且不能与关键字相同;应避 免与预定义标识符相同;标识符区分大小写。
(3)字符型常量 C的字符常数是用单引号括起来的字符。如‘a’,’x’,’A’等。 除了以上形式的字符常数外,C还允许用一种特殊形式的字 符常数,就是以一个“\”开头的字符系列,称为“转义字符 ” 常用的以“\”开头的特殊字符见下表:
例如: main() {printf(“123456789012345\n”); printf(“ab c\tde\b\101fg\n”); printf(“ab c\rde\12\x41\n”); } 运行结果: 123456789012345 ab c dAfg de c A
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”) 。对长整 型可以用“%lx”格式输出,同样可以指定输出宽度(“%mx”或 “%mlx”)。实际上是将内存中的数据每4位一组按十六进制形式输 出,因此输出的数值也不带符号,即将符号位也一起作为十六进 制数的一部分输出。如:
2.基本数据类型(basic dataห้องสมุดไป่ตู้types) C的基本数据类型如下:
整型(int) 字符型(char) 基本类型 实型(浮点型) 双精度型(double) 枚举类型(enum) 数组类型([]) 数据类型 构造类型 结构体类型(struct) 共用体类型(union) 指针类型(*) 空类型(NULL) 单精度型(float)
数据类型关键字 <变量名表>
如: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,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;
(4)字符串常数 字符常数是由一对单引号括起来的单个字符。字符串常数是 一对双引号括起来的字符系列。如: “How do you do.”, “ CHINA”, “a”, “$123.45” 都是字符串常数。 注意:字符常数‘a’与字符串常数“a”是不同的, 不能把 “a”等字符串常数赋给一个字符变量。 C规定:在每一个字符串的结尾加一个“字符串结束标志” 即字符‘\0’,因此,字符串常数“a”在内存中是:
2.1.3 内存的概念
计算机内存是由一片连续的存储单元组成,操作系统给每个单 元编号,这个编号称为内存单元的地址。地址通常由一组连 续的整数组成,编号小的称为内存低地址,编号大的称为内 存高地址。每个单元占1个字节,即内存中每个字节有一个地 址(编号)。 如果定义了一个整型变量i: int i; i=10; i实际是占2个字节的一个内存地址名,这个地址中存放的内 容是10。数据在内存中实际存放情况如下:
(5)c格式符:用于输出一个字符(“%c”),可以指定输出宽度 (“%mc”,m为正,字符前补空格,m为负,字符后补空格),也可以 (“%mlc”无意义)。如果给定的输出值>255,“则将低8位转换为字 符输出。如: main() {char c=‘a’; int i=97; int j=97+256; printf(“%c,%d\n”,c,c); printf(“%c,%d\n”,i,i); printf(“%c,%d\n”,j,j); } 运行结果为:a,97 a,97 a,353
(1) 整型常量 C语言整型常数可用以下三种形式表示: ①十进制整型。不由0开头,由0~9组成,前面可加正负号 ;如123,-456,0。 ②八进制整数。以0开头,只能由0~7组成,前面可加正负 号。如0123表示八进制数123,即182+281+380,-011表示八 进制-11,即十进制-9 ③ 十六进制整数。以0x(或X)开头,可以由0~9、字母a( 或A)~f(或F)组成,前面可加正负号。如0x123等于十进制数 的291。-0x12等于十进制的-18。 整型常数的类型: ①在一个整常数后加一字母u,则认为是无符号常数;
每一个格式说明都必须用%开头,以一个格式字符作为结束,在此 之间根据需要可以插入“宽度说明”、左对齐符号“-”、长度 修饰符“l”和“L”等。 不同类型的数据用不同的格式字符。常用的有以下几种: (1)d(或i)格式符:用于输出十进制整数(不能输出float或double) %d:按整型数据的实际长度输出。 %md:用m指定输出字段的宽度,如果数据的实际位数小于m,则左 端补空格(m为负时,右补空,下同),若大于m,则按实际位数输出。 如printf(“%4d,%4d”,a,b) 若a=123,b=12345,则输出为: 123,12345 %ld 或%Ld :输出长整型数据,也可用于输出int型数据(不能写 成%dl)。可以指定输出宽度,如:
字符串“a”实际上包含2个字符‘a’和‘\0’,因而不能赋给只 能容纳一个字符的字符变量。 C语言没有专门的字符串变量,解决办法是使用字符数组。
(5)符号常数 用标识符代表的常量称为符号常量。习惯用大写字母表示 可以用两种方法定义符号常数: ①利用宏定义#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;
②在一个整常数后面加一个字母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位)非 零的数字,称为“规范化的指数形式”。 实型常数的类型 许多C编译系统将实型常数作为双精度(double,占8个字节 )来处理。可以在带小数点的数的后面加字母f或F来指定实 型常数为单精度(float,占4个字节),加字母l或L来指定实 型常数为长双精度(long double,占10个字节)。
在程序中对用到的所有数据类型都必须指定其数据类型。
2.1.2 常量与变量
1. 常量(constants) 在程序运行过程中,其值不能被改变的量称为常量。 C语言有整型常量、实型常量、字符型常量、字符串常量和 符号常量5种。 如12、0、-3为整型常量,4.6、-1.23为实型常量,‘a’、‘d’ 为字符常量,“abcd”、 “ 12hhd”为字符串常量。 用标识符代表的常量称为符号常量。 如 #define PRICE 30
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()
{unsigned int a=65535;
int b=-2; printf(“a=%d,%o,%x,%u\n”,a,a,a,a); printf(“b=%d,%o,%x,%u\n”,b,b,b,b); } 运行结果为: a=-1,177777,ffff,65535 b=-2,177776,fffe,65534
(6)s格式符:用于输出一个字符串(“%s”),可以指定输出宽度 (“%ms”, 若m<串长,按实际串输出;m为正且>串长,串左补空格 ,m为负,串右补空格),也可以(“%m.ns”,输出占m列,但只取字符 串中左端n个字符,这n个字符输出在m列的右侧,左补空格),还 可以(“%-m.ns”,输出占m列,但只取字符串中左端n个字符,这n个 字符输出在m列的左侧,右补空格)。如果n>m,则m自动取n值,即 保证n个字符正常输出;如果n>串长,则按实际串输出。如: main() {printf(“%3s,%7.2s,%.4s,%-5.3s\n”, “CHINA”, “CHINA”, “CHINA”, “CHINA”);} 运行结果:CHINA, CH,CHIN,CHI
2.2 基本输入输出函数
2.2.1 格式输入函数和格式输出函数
1.printf函数(格式输出函数) 作用:向终端设备输出若干个任意类型的数据。一般格式: printf(格式控制,输出列表) 如:printf(“%d,%c\n”,i,c) 其中:“格式控制”是用双引号括起来的字符串,包括普通字符( 需原样输出的字符)和格式说明(由“%”和格式字符(一般为小写) 组成,用于将输出的数据转换为指定的格式输出。 注意:①格式说明与输出项从左到右的数据类型必须一一匹配,否 则将输出错误结果。如printf(“%d,%d\n”,123,123.456); ②格式说明与输出项的个数必须相同。 ③printf调用结束后返回一个函数值,其值等于输出项个数
2. 变量(variables) 其值可以改变的量称为变量。一个变量应该有一个名字即变 量名,变量名只能由字母、数字和下划线三种字符组成,且 第一个字符必须为字母或下划线。一个变量在内存中占有一 定的存储空间,这个存储空间内所存放的数据就是变量的值 。变量的类型确定了该变量的性质、取值范围、占内存空间 的大小以及所能参加运算的方式。C语言区分大小写字母。 变量名一般为长度8的小写字母。 变量定义的格式如下:
*
有符号数的最高位表示符号位,符号位为0表示整数,符号位为 1表示负数;无符号数表示的都是正数,其最高位不是符号位 。如:内存中有二进制数1111 1111 1110 0111,把它看成是有 符号整数时,其值为-25;若把它视为无符号整数,则值为 0xffe7(即十进制65511)。 字符变量的值即字符数据在内存中是以二进制形式存放字符的 ASCII码。如:内存中有二进制数0100 0001,把它看成是字 符类型时,其值为‘A’,把它视为int类型时,其值为65。 字符型数据和整型数据是通用的,可以混用(注意:字符数据 只占一个字节)。
i 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
如果数值是负的,则在内存中存放它的补码。如存放-10情况 如下:
10的原码
取反
再加1得 -10的补码
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
第二章 C语言的语法基础
2.1 基本数据类型
2.2 基本输入、输出函数
2.3 运算符和表达式
2.1 基本数据类型
2.1.1 标识符与基本数据类型
1.标识符(identifier) 标识符是一个名字,在 C 语言中指常量、变量、类型、语句 、标号及函数的名称。 C 语言标识符有三类:关键字、预 定义标识符和用户定义标识符。 (1)关键字(43个): 已被C系统所使用的标识符。 (2)预定义标识符:C系统提供的库函数名和编译预处理命令等 (3)用户标识符:用户根据需要在程序中用到的变量、符号常数 、用户函数、标号等进行命名。命名规则: ①标识符只能由英文字母、下划线和数字组成,且只能由英文 字母或下划线开头。 ②标识符长度不能超过32个字符,且不能与关键字相同;应避 免与预定义标识符相同;标识符区分大小写。
(3)字符型常量 C的字符常数是用单引号括起来的字符。如‘a’,’x’,’A’等。 除了以上形式的字符常数外,C还允许用一种特殊形式的字 符常数,就是以一个“\”开头的字符系列,称为“转义字符 ” 常用的以“\”开头的特殊字符见下表:
例如: main() {printf(“123456789012345\n”); printf(“ab c\tde\b\101fg\n”); printf(“ab c\rde\12\x41\n”); } 运行结果: 123456789012345 ab c dAfg de c A
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”) 。对长整 型可以用“%lx”格式输出,同样可以指定输出宽度(“%mx”或 “%mlx”)。实际上是将内存中的数据每4位一组按十六进制形式输 出,因此输出的数值也不带符号,即将符号位也一起作为十六进 制数的一部分输出。如:
2.基本数据类型(basic dataห้องสมุดไป่ตู้types) C的基本数据类型如下:
整型(int) 字符型(char) 基本类型 实型(浮点型) 双精度型(double) 枚举类型(enum) 数组类型([]) 数据类型 构造类型 结构体类型(struct) 共用体类型(union) 指针类型(*) 空类型(NULL) 单精度型(float)
数据类型关键字 <变量名表>
如: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,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;
(4)字符串常数 字符常数是由一对单引号括起来的单个字符。字符串常数是 一对双引号括起来的字符系列。如: “How do you do.”, “ CHINA”, “a”, “$123.45” 都是字符串常数。 注意:字符常数‘a’与字符串常数“a”是不同的, 不能把 “a”等字符串常数赋给一个字符变量。 C规定:在每一个字符串的结尾加一个“字符串结束标志” 即字符‘\0’,因此,字符串常数“a”在内存中是:
2.1.3 内存的概念
计算机内存是由一片连续的存储单元组成,操作系统给每个单 元编号,这个编号称为内存单元的地址。地址通常由一组连 续的整数组成,编号小的称为内存低地址,编号大的称为内 存高地址。每个单元占1个字节,即内存中每个字节有一个地 址(编号)。 如果定义了一个整型变量i: int i; i=10; i实际是占2个字节的一个内存地址名,这个地址中存放的内 容是10。数据在内存中实际存放情况如下:
(5)c格式符:用于输出一个字符(“%c”),可以指定输出宽度 (“%mc”,m为正,字符前补空格,m为负,字符后补空格),也可以 (“%mlc”无意义)。如果给定的输出值>255,“则将低8位转换为字 符输出。如: main() {char c=‘a’; int i=97; int j=97+256; printf(“%c,%d\n”,c,c); printf(“%c,%d\n”,i,i); printf(“%c,%d\n”,j,j); } 运行结果为:a,97 a,97 a,353
(1) 整型常量 C语言整型常数可用以下三种形式表示: ①十进制整型。不由0开头,由0~9组成,前面可加正负号 ;如123,-456,0。 ②八进制整数。以0开头,只能由0~7组成,前面可加正负 号。如0123表示八进制数123,即182+281+380,-011表示八 进制-11,即十进制-9 ③ 十六进制整数。以0x(或X)开头,可以由0~9、字母a( 或A)~f(或F)组成,前面可加正负号。如0x123等于十进制数 的291。-0x12等于十进制的-18。 整型常数的类型: ①在一个整常数后加一字母u,则认为是无符号常数;
每一个格式说明都必须用%开头,以一个格式字符作为结束,在此 之间根据需要可以插入“宽度说明”、左对齐符号“-”、长度 修饰符“l”和“L”等。 不同类型的数据用不同的格式字符。常用的有以下几种: (1)d(或i)格式符:用于输出十进制整数(不能输出float或double) %d:按整型数据的实际长度输出。 %md:用m指定输出字段的宽度,如果数据的实际位数小于m,则左 端补空格(m为负时,右补空,下同),若大于m,则按实际位数输出。 如printf(“%4d,%4d”,a,b) 若a=123,b=12345,则输出为: 123,12345 %ld 或%Ld :输出长整型数据,也可用于输出int型数据(不能写 成%dl)。可以指定输出宽度,如: