第2章 C语言教学课件 数据类型运算符和表达式.ppt
第第第第2 2 2 2章章章章 数据数据数据数据类型、运算类型、运算类型、运算类型、运算符与表达式符与表达式符与表达式符与表达式苏小红苏小红 ,2023/4/22C语言大学使用教程课件 制作人 苏小红2内容提要内容提要内容提要内容提要 基本数据类型;基本数据类型;基本数据类型;基本数据类型;常量和变量;常量和变量;常量和变量;常量和变量;标识符命名;标识符命名;标识符命名;标识符命名;常用运算符和表达式;常用运算符和表达式;常用运算符和表达式;常用运算符和表达式;运算符的优先级与结合性运算符的优先级与结合性运算符的优先级与结合性运算符的优先级与结合性 2023/4/22C语言大学使用教程课件 制作人 苏小红3一个简单的一个简单的一个简单的一个简单的C C程序例子程序例子程序例子程序例子#includeinclude /*/*函数功能函数功能函数功能函数功能:计算两个整数相加之和计算两个整数相加之和计算两个整数相加之和计算两个整数相加之和 入口参数入口参数入口参数入口参数:整型数据整型数据整型数据整型数据a a和和和和b b 返回值:返回值:返回值:返回值:整型数整型数整型数整型数a a和和和和b b之和之和之和之和*/intint AddAdd(intint a,a,intint b)b)returnreturn(a+b);(a+b);/*/*主函数主函数主函数主函数*/mainmain()()intint x,y,sum=0;x,y,sum=0;printf(Input two integers:);printf(Input two integers:);scanf(%d%d,&x,&y);/*scanf(%d%d,&x,&y);/*输入两个整型数输入两个整型数输入两个整型数输入两个整型数x x和和和和y*/y*/sum=sum=AddAdd(x,y);/*(x,y);/*调用函数调用函数调用函数调用函数AddAdd计算计算计算计算x x和和和和y y相加之和相加之和相加之和相加之和*/printf(sum=%dn,sum);/*printf(sum=%dn,sum);/*输出输出输出输出x x和和和和y y相加之和相加之和相加之和相加之和*/2023/4/22C语言大学使用教程课件 制作人 苏小红4C C程序常见符号分类程序常见符号分类程序常见符号分类程序常见符号分类 关键字(关键字(关键字(关键字(KeywordKeyword)又称为保留字,又称为保留字,又称为保留字,又称为保留字,C C语言中预先规定的具有固定含义的一些单词语言中预先规定的具有固定含义的一些单词语言中预先规定的具有固定含义的一些单词语言中预先规定的具有固定含义的一些单词 标识符(标识符(标识符(标识符(IdentifierIdentifier)系统预定义标识符系统预定义标识符系统预定义标识符系统预定义标识符 用户自定义标识符用户自定义标识符用户自定义标识符用户自定义标识符 运算符(运算符(运算符(运算符(OperatorOperator)3434种,详见附录种,详见附录种,详见附录种,详见附录2 2 分隔符(分隔符(分隔符(分隔符(SeparatorSeparator)空格、回车空格、回车空格、回车空格、回车/换行、逗号等换行、逗号等换行、逗号等换行、逗号等 其它符号其它符号其它符号其它符号 大花括号大花括号大花括号大花括号“”和和和和“”通常用于标识函数体或者一个语句块通常用于标识函数体或者一个语句块通常用于标识函数体或者一个语句块通常用于标识函数体或者一个语句块 “/*”/*”和和和和“*“*/”/”是程序注释所需的定界符是程序注释所需的定界符是程序注释所需的定界符是程序注释所需的定界符 数据(数据(数据(数据(DataData)变量(变量(变量(变量(VariableVariable)常量(常量(常量(常量(ConstantConstant)2023/4/22C语言大学使用教程课件 制作人 苏小红5数据类型(数据类型(数据类型(数据类型(Data TypeData Type)数据为什么要区分类型?数据为什么要区分类型?数据为什么要区分类型?数据为什么要区分类型?不同类型的数据代表不同的不同类型的数据代表不同的不同类型的数据代表不同的不同类型的数据代表不同的数据表示形式数据表示形式数据表示形式数据表示形式合法的取值范围合法的取值范围合法的取值范围合法的取值范围占用内存空间大小占用内存空间大小占用内存空间大小占用内存空间大小可参与的运算种类可参与的运算种类可参与的运算种类可参与的运算种类 从基本数据类型到抽象数据类型从基本数据类型到抽象数据类型从基本数据类型到抽象数据类型从基本数据类型到抽象数据类型无数据类型无数据类型无数据类型无数据类型基本数据类型基本数据类型基本数据类型基本数据类型 构造数据类型构造数据类型构造数据类型构造数据类型 抽象数据类型抽象数据类型抽象数据类型抽象数据类型 2023/4/22C语言大学使用教程课件 制作人 苏小红6数据类型(数据类型(数据类型(数据类型(Data TypeData Type)数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型整型整型实型(浮点型)实型(浮点型)字符型字符型枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型单精度实型双精度实型基本整型长整型短整型无符号整型2023/4/22C语言大学使用教程课件 制作人 苏小红7标识符命名标识符命名标识符命名标识符命名 变量名变量名变量名变量名 函数名函数名函数名函数名 由英文字母、数字和下划线组成,大小写敏感由英文字母、数字和下划线组成,大小写敏感由英文字母、数字和下划线组成,大小写敏感由英文字母、数字和下划线组成,大小写敏感 不可以不可以不可以不可以是数字开头是数字开头是数字开头是数字开头 直观,见名知意,便于记忆和阅读直观,见名知意,便于记忆和阅读直观,见名知意,便于记忆和阅读直观,见名知意,便于记忆和阅读 最好使用英文单词或其组合最好使用英文单词或其组合最好使用英文单词或其组合最好使用英文单词或其组合 切忌使用汉语拼音切忌使用汉语拼音切忌使用汉语拼音切忌使用汉语拼音 下划线和大小写通常用来增强可读性下划线和大小写通常用来增强可读性下划线和大小写通常用来增强可读性下划线和大小写通常用来增强可读性 variablenamevariablename variable_namevariable_name VariableNameVariableName,variableNamevariableName 不允许使用关键字作为标识符的名字不允许使用关键字作为标识符的名字不允许使用关键字作为标识符的名字不允许使用关键字作为标识符的名字 intint,floatfloat,forfor,whilewhile,ifif等等等等 某些功能的变量采用习惯命名某些功能的变量采用习惯命名某些功能的变量采用习惯命名某些功能的变量采用习惯命名 如:如:如:如:forfor语句所采用的循环变量习惯用语句所采用的循环变量习惯用语句所采用的循环变量习惯用语句所采用的循环变量习惯用i,j,ki,j,kWindows Windows 风格风格UNIX UNIX 风格风格2023/4/22C语言大学使用教程课件 制作人 苏小红8b,B,KB,MB,GB,TBb,B,KB,MB,GB,TB Megabyte(MBMegabyte(MB),中文叫法:中文叫法:中文叫法:中文叫法:兆兆兆兆 Kilobyte(KBKilobyte(KB),中文叫法:中文叫法:中文叫法:中文叫法:KK ByteByte,中文叫法:中文叫法:中文叫法:中文叫法:字节字节字节字节 bitbit,中文叫法:中文叫法:中文叫法:中文叫法:位位位位 Gigabyte(GBGigabyte(GB),中文叫法:中文叫法:中文叫法:中文叫法:GG Terabyte(TBTerabyte(TB),中文叫法:中文叫法:中文叫法:中文叫法:T T1 TB 1 TB=1,024 GB1,024 GB1 GB1 GB =1,024 MB1,024 MB1 MB1 MB =1,024 KB1,024 KB1 KB1 KB =1,024 B1,024 B1 B 1 B=8 b8 b2023/4/22C语言大学使用教程课件 制作人 苏小红9b,B,KB,MB,GB,TBb,B,KB,MB,GB,TB 一个位有多大?一个位有多大?一个位有多大?一个位有多大?只能是只能是只能是只能是“0”0”或者或者或者或者“1”1”,这叫二进制,这叫二进制,这叫二进制,这叫二进制 一个字节有多大?一个字节有多大?一个字节有多大?一个字节有多大?保存一个字符(英文字母、数字、符号)保存一个字符(英文字母、数字、符号)保存一个字符(英文字母、数字、符号)保存一个字符(英文字母、数字、符号)ASCIIASCII(美国标准信息交换码)编码(美国标准信息交换码)编码(美国标准信息交换码)编码(美国标准信息交换码)编码两个字节保存一个汉字两个字节保存一个汉字两个字节保存一个汉字两个字节保存一个汉字 GBGB编码编码编码编码可以表示数字可以表示数字可以表示数字可以表示数字025502552023/4/22C语言大学使用教程课件 制作人 苏小红10基本数据类型基本数据类型基本数据类型基本数据类型 intint整数,在目前绝大多数机器上占整数,在目前绝大多数机器上占整数,在目前绝大多数机器上占整数,在目前绝大多数机器上占4 4个字节。个字节。个字节。个字节。TC2TC2中中中中是是是是2 2个字节个字节个字节个字节 floatfloat单精度浮点数,一般是单精度浮点数,一般是单精度浮点数,一般是单精度浮点数,一般是4 4个字节长个字节长个字节长个字节长 doubledouble双精度浮点数,一般是双精度浮点数,一般是双精度浮点数,一般是双精度浮点数,一般是8 8个字节长个字节长个字节长个字节长 charchar字符,一般是字符,一般是字符,一般是字符,一般是1 1个字节长个字节长个字节长个字节长用来表示用来表示用来表示用来表示256256个个个个ASCIIASCII字符,或者字符,或者字符,或者字符,或者02550255的整数的整数的整数的整数2023/4/22C语言大学使用教程课件 制作人 苏小红11数据类型修饰符数据类型修饰符数据类型修饰符数据类型修饰符 shortshort shortshort intint,短整数,一般,短整数,一般,短整数,一般,短整数,一般2 2个字节长。通常简写为个字节长。通常简写为个字节长。通常简写为个字节长。通常简写为shortshort longlong longlong intint,长整数,一般是,长整数,一般是,长整数,一般是,长整数,一般是4 4个字节长。通常简写为个字节长。通常简写为个字节长。通常简写为个字节长。通常简写为longlong longlong doubledouble,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是1010个字节长。个字节长。个字节长。个字节长。signedsigned 用来修饰用来修饰用来修饰用来修饰charchar、intint、shortshort和和和和longlong,说明他们是,说明他们是,说明他们是,说明他们是有符号有符号有符号有符号的整数的整数的整数的整数(正整数、(正整数、(正整数、(正整数、0 0和负整数)。一般缺省都是有符号的,所以这个修饰符和负整数)。一般缺省都是有符号的,所以这个修饰符和负整数)。一般缺省都是有符号的,所以这个修饰符和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略通常省略通常省略通常省略 unsignedunsigned 用来修饰用来修饰用来修饰用来修饰charchar、intint、shortshort和和和和longlong,说明他们是,说明他们是,说明他们是,说明他们是无符号无符号无符号无符号的整数的整数的整数的整数(正整数和(正整数和(正整数和(正整数和0 0)2023/4/22C语言大学使用教程课件 制作人 苏小红12使用变量要注意使用变量要注意使用变量要注意使用变量要注意 不要对变量所占的内存空间字节数想当然不要对变量所占的内存空间字节数想当然不要对变量所占的内存空间字节数想当然不要对变量所占的内存空间字节数想当然用用用用sizeofsizeof获得变量或者数据类型的长度获得变量或者数据类型的长度获得变量或者数据类型的长度获得变量或者数据类型的长度现场演示程序在现场演示程序在现场演示程序在现场演示程序在Turbo C2.0Turbo C2.0和和和和Visual CVisual C下的运行结果下的运行结果下的运行结果下的运行结果注意!注意!注意!注意!#include#include mainmain()()printfprintf(Data(Data type Number of bytesn);type Number of bytesn);printfprintf(-n);(-n);printfprintf(char(char%dndn,sizeof(charsizeof(char););printfprintf(int(int%dndn,sizeof(intsizeof(int););printfprintf(short(short intint%dndn,sizeof(shortsizeof(short););printfprintf(long(long intint%dndn,sizeof(longsizeof(long););printfprintf(float(float%dndn,sizeof(floatsizeof(float););printfprintf(double%dn,sizeof(double);(double%dn,sizeof(double);2023/4/22C语言大学使用教程课件 制作人 苏小红13变量声明变量声明变量声明变量声明 使用变量的基本原则使用变量的基本原则使用变量的基本原则使用变量的基本原则变量必须先定义,后使用变量必须先定义,后使用变量必须先定义,后使用变量必须先定义,后使用所有变量必须在第一条可执行语句前定义所有变量必须在第一条可执行语句前定义所有变量必须在第一条可执行语句前定义所有变量必须在第一条可执行语句前定义 声明的顺序无关紧要声明的顺序无关紧要声明的顺序无关紧要声明的顺序无关紧要 一条声明语句可声明若干个同类型的变量一条声明语句可声明若干个同类型的变量一条声明语句可声明若干个同类型的变量一条声明语句可声明若干个同类型的变量 声明变量,是初始化变量的最好时机声明变量,是初始化变量的最好时机声明变量,是初始化变量的最好时机声明变量,是初始化变量的最好时机不被初始化的变量,其值为危险的随机数不被初始化的变量,其值为危险的随机数不被初始化的变量,其值为危险的随机数不被初始化的变量,其值为危险的随机数charchar esc=a;esc=a;intint i=1;i=1;intint sum=0;sum=0;floatfloat epseps=1.0e-5;=1.0e-5;2023/4/22C语言大学使用教程课件 制作人 苏小红14实型数据提供的有效数字位数实型数据提供的有效数字位数实型数据提供的有效数字位数实型数据提供的有效数字位数 floatfloat型数据提供型数据提供型数据提供型数据提供7 7位有效数字位有效数字位有效数字位有效数字 doubledouble型数据提供型数据提供型数据提供型数据提供1616位有效数字位有效数字位有效数字位有效数字 使用不当导致舍入误差使用不当导致舍入误差使用不当导致舍入误差使用不当导致舍入误差#include#include mainmain()()floatfloat a;a;doubledouble b;b;a=123456.789e4;a=123456.789e4;b=123456.789e4;b=123456.789e4;printfprintf(%fn%fn,a,b);(%fn%fn,a,b);2023/4/22C语言大学使用教程课件 制作人 苏小红15数据在内存中的存储格式数据在内存中的存储格式数据在内存中的存储格式数据在内存中的存储格式 整型整型整型整型 实型实型实型实型 字符型字符型字符型字符型阶码符号阶码符号阶码的数值阶码的数值尾数符号尾数符号尾数的数值尾数的数值阶码阶码j尾数尾数S2023/4/22C语言大学使用教程课件 制作人 苏小红16charchar型与型与型与型与intint型之间的关系型之间的关系型之间的关系型之间的关系 小写字母转换为大写字母小写字母转换为大写字母小写字母转换为大写字母小写字母转换为大写字母#include#include mainmain()()charchar chch=b;=b;chch=b-32;=b-32;printfprintf(%c,%dn,ch,ch);(%c,%dn,ch,ch);#include#include mainmain()()charchar chch=b;=b;chch=b-(a-A)=b-(a-A);printfprintf(%c,%dn,ch,ch);(%c,%dn,ch,ch);2023/4/22C语言大学使用教程课件 制作人 苏小红17常数(常数(常数(常数(ConstantConstant)整型常数整型常数整型常数整型常数1818、-3131长整型常量长整型常量长整型常量长整型常量 123l123l、123L123L、123456l123456l、123456L123456L无符号型常量无符号型常量无符号型常量无符号型常量 123u123u、123U123U 浮点常数浮点常数浮点常数浮点常数十进制小数形式十进制小数形式十进制小数形式十进制小数形式 123.45123.45、456.78456.78指数形式指数形式指数形式指数形式 1e-21e-2、4.5e34.5e3单精度实型常量单精度实型常量单精度实型常量单精度实型常量 123.45f123.45f、456.78F456.78F、1e-2f1e-2f、4.5e3F4.5e3F长双精度型常量长双精度型常量长双精度型常量长双精度型常量 123.45l123.45l、456.78L456.78L、1e-2l1e-2l、4.5e3L4.5e3L2023/4/22C语言大学使用教程课件 制作人 苏小红18一般用大写字母是宏定义预处理命令,不是C语句直接常量:整型常量实型常量字符常量字符串常量如#define PRICE 30定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define 符号常量 常量例 符号常量举例(ch2_1.c)#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);运行结果:total=300常量常量2023/4/22C语言大学使用教程课件 制作人 苏小红19三种形式:十进制整数:由数字09和正负号表示.如 123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0Xff例 12 与 12L例 30000 为int型 65536 为long int 型整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是long int 型常量问题:0123 =()100 x123=()100Xff =()1083291255问题:0123 =()100 x123=()100Xff =()10整型常量(整常数)整型常量(整常数)2023/4/22C语言大学使用教程课件 制作人 苏小红20八进制与十六进制常数八进制与十六进制常数八进制与十六进制常数八进制与十六进制常数 以数字以数字以数字以数字“0 0”开始的整型常数是八进制数开始的整型常数是八进制数开始的整型常数是八进制数开始的整型常数是八进制数022022、-037-037010010和和和和1010大小不一样大小不一样大小不一样大小不一样因为八进制并不常用,所以此种表示法比较少见因为八进制并不常用,所以此种表示法比较少见因为八进制并不常用,所以此种表示法比较少见因为八进制并不常用,所以此种表示法比较少见 以以以以“0 x0 x”或者或者或者或者“0X0X”开始的整型常数是十六进开始的整型常数是十六进开始的整型常数是十六进开始的整型常数是十六进制制制制AFAF和和和和afaf用来表示十进制的用来表示十进制的用来表示十进制的用来表示十进制的10151015十六进制的形式比较常用,尤其在进行位一级的控十六进制的形式比较常用,尤其在进行位一级的控十六进制的形式比较常用,尤其在进行位一级的控十六进制的形式比较常用,尤其在进行位一级的控制的时候制的时候制的时候制的时候0 x120 x12、-0 x1F,-0 x1f-0 x1F,-0 x1f2023/4/22C语言大学使用教程课件 制作人 苏小红21表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5 ,1.2E-3.5 实型常量的类型默认double型在实型常量后加字母f或F,认为它是float 型实型常量(实数或浮点数)实型常量(实数或浮点数)2023/4/22C语言大学使用教程课件 制作人 苏小红22定义:用单引号括起来的单个普通字符或转义字符.字符常量的值:该字符的ASCII码值如 101 -A 012 -n 376 -x61 -a 60 -0 483 -()例:A-101-x41-65如 A65,a97,048,n10如 a A?n 101转义字符:反斜线后面跟一个字符或一个代码值表示例 转义字符举例(ch2_001.c,ch2_004.c)main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C例 main()printf(“Yb=n”);运行结果:屏幕显示:=打印机输出:字符常量字符常量2023/4/22C语言大学使用教程课件 制作人 苏小红23字符(字符(字符(字符(CharacterCharacter)常数)常数)常数)常数 字符常数的表示方法字符常数的表示方法字符常数的表示方法字符常数的表示方法aa,AA,55,%,$单引号内只能有一个字符,除非用单引号内只能有一个字符,除非用单引号内只能有一个字符,除非用单引号内只能有一个字符,除非用“”开头开头开头开头 就是一个普通整数,也可以参与各种数学运算就是一个普通整数,也可以参与各种数学运算就是一个普通整数,也可以参与各种数学运算就是一个普通整数,也可以参与各种数学运算每个字符具有一个每个字符具有一个每个字符具有一个每个字符具有一个02550255之间的数值,可从之间的数值,可从之间的数值,可从之间的数值,可从ASCIIASCII表表表表查出查出查出查出注意:注意:注意:注意:55和整数和整数和整数和整数5 5的区别的区别的区别的区别字符的数学运算在密码学内用得比较多字符的数学运算在密码学内用得比较多字符的数学运算在密码学内用得比较多字符的数学运算在密码学内用得比较多2023/4/22C语言大学使用教程课件 制作人 苏小红24字符常数字符常数字符常数字符常数 转义字符转义字符转义字符转义字符 一些特殊字符(无法从键盘输入或者另有它用)用转义一些特殊字符(无法从键盘输入或者另有它用)用转义一些特殊字符(无法从键盘输入或者另有它用)用转义一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示字符表示字符表示字符表示2023/4/22C语言大学使用教程课件 制作人 苏小红25字符串(字符串(字符串(字符串(StringString)常数)常数)常数)常数 用双引号括住的由用双引号括住的由用双引号括住的由用双引号括住的由0 0个或多个字符组成的字符序列个或多个字符组成的字符序列个或多个字符组成的字符序列个或多个字符组成的字符序列I am a stringI am a string表示空字符串表示空字符串表示空字符串表示空字符串转义字符也可以在字符串中使用转义字符也可以在字符串中使用转义字符也可以在字符串中使用转义字符也可以在字符串中使用引号只作为字符串开始和结束的标志引号只作为字符串开始和结束的标志引号只作为字符串开始和结束的标志引号只作为字符串开始和结束的标志C C语言内部用语言内部用语言内部用语言内部用00表示字符串的结束表示字符串的结束表示字符串的结束表示字符串的结束除注释外,是唯一可以出现中文的地方除注释外,是唯一可以出现中文的地方除注释外,是唯一可以出现中文的地方除注释外,是唯一可以出现中文的地方 xx和和和和xx是不同的是不同的是不同的是不同的 里定义了一系列专门的字符串处理函数里定义了一系列专门的字符串处理函数里定义了一系列专门的字符串处理函数里定义了一系列专门的字符串处理函数2023/4/22C语言大学使用教程课件 制作人 苏小红26 3.字符和字符串 字字字字符符符符串串串串是是是是用用用用双双双双引引引引号号号号括括括括起起起起来来来来的的的的字字字字符符符符序序序序列列列列。字字字字符符符符和和和和字字字字符串有着本质的区别,两者不能混淆:符串有着本质的区别,两者不能混淆:符串有着本质的区别,两者不能混淆:符串有着本质的区别,两者不能混淆:(1)(1)字字字字符符符符用用用用单单单单引引引引号号号号括括括括起起起起来来来来,而而而而字字字字符符符符串串串串用用用用双双双双引引引引号号号号括括括括起起起起来;两者不能混淆。来;两者不能混淆。来;两者不能混淆。来;两者不能混淆。(2)(2)不能将字符串赋给一个字符变量。不能将字符串赋给一个字符变量。不能将字符串赋给一个字符变量。不能将字符串赋给一个字符变量。(3)(3)单引号括起来的只有一个字符,而双引号括起单引号括起来的只有一个字符,而双引号括起单引号括起来的只有一个字符,而双引号括起单引号括起来的只有一个字符,而双引号括起来的有多个字符。不管显示出来有多少个字符,字符串来的有多个字符。不管显示出来有多少个字符,字符串来的有多个字符。不管显示出来有多少个字符,字符串来的有多个字符。不管显示出来有多少个字符,字符串都有一个看不见的字符都有一个看不见的字符都有一个看不见的字符都有一个看不见的字符 00 。C C语言规定:以字符语言规定:以字符00作作为字符串结束的标志。在写字符串时不必加为字符串结束的标志。在写字符串时不必加0 0,00字符是系统自动加上的。字符是系统自动加上的。字符:字符:字符:字符:a a ,字符串:字符串:字符串:字符串:”a a”中有两个字符中有两个字符中有两个字符中有两个字符 a a 和和和和00,其中其中其中其中00 是是是是ASCIIASCII码值码值码值码值0 0的字符,是空字符。比如字符串的字符,是空字符。比如字符串的字符,是空字符。比如字符串的字符,是空字符。比如字符串CHINACHINA的的的的长度是个字符,而不是个字符。长度是个字符,而不是个字符。长度是个字符,而不是个字符。长度是个字符,而不是个字符。2023/4/22C语言大学使用教程课件 制作人 苏小红27枚举(枚举(枚举(枚举(EnumerationEnumeration)常量)常量)常量)常量 一个被遗忘的角色一个被遗忘的角色一个被遗忘的角色一个被遗忘的角色 从程序来窥其一斑从程序来窥其一斑从程序来窥其一斑从程序来窥其一斑 enumenum weeks MON,TUE,WED,THU,FRI,SAT,SUN;weeks MON,TUE,WED,THU,FRI,SAT,SUN;enumenum weeks today;weeks today;enumenum response no,yes,none;response no,yes,none;enumenum response answer;response answer;today =TUE;today =TUE;answer=yes;answer=yes;ifif(answer answer=yes)=yes)printf(Todayprintf(Today is Tuesday.n);is Tuesday.n);elseelse printf(Todayprintf(Today is NOT Tuesday.n);is NOT Tuesday.n);2023/4/22C语言大学使用教程课件 制作人 苏小红28宏常量宏常量宏常量宏常量 宏常量宏常量宏常量宏常量也称符号常量也称符号常量也称符号常量也称符号常量一般采用大写字母表示一般采用大写字母表示一般采用大写字母表示一般采用大写字母表示#define#define 标识符标识符标识符标识符 字符串字符串字符串字符串不是语句,而是一种编译预处理命令不是语句,而是一种编译预处理命令不是语句,而是一种编译预处理命令不是语句,而是一种编译预处理命令 宏替换(宏替换(宏替换(宏替换(Macro Macro SubstitulitionSubstitulition)#include#include#define PI 3.14159#define PI 3.14159#define R 5.3#define R 5.3mainmain()()printfprintf(area(area=%=%fnfn,PI*R*R);,PI*R*R);printfprintf(circumference(circumference=%=%fnfn,2*PI*R);,2*PI*R);2023/4/22C语言大学使用教程课件 制作人 苏小红29宏常量宏常量宏常量宏常量 宏常量宏常量宏常量宏常量也称符号常量也称符号常量也称符号常量也称符号常量一般采用大写字母表示一般采用大写字母表示一般采用大写字母表示一般采用大写字母表示#define#define 标识符标识符标识符标识符 字符串字符串字符串字符串不是语句,而是一种编译预处理命令不是语句,而是一种编译预处理命令不是语句,而是一种编译预处理命令不是语句,而是一种编译预处理命令 宏替换(宏替换(宏替换(宏替换(Macro Macro SubstitulitionSubstitulition)#include#include#define PI 3.14159#define PI 3.14159#define R 5.3#define R 5.3mainmain()()printfprintf(PI(PI*R*R=%*R*R=%fnfn,PI*R*R);,PI*R*R);printfprintf(2*PI*R=%(2*PI*R=%fnfn,2*PI*R);,2*PI*R);2023/4/22C语言大学使用教程课件 制作人 苏小红30constconst常量常量常量常量 用用用用constconst修饰定义的变量为常量修饰定义的变量为常量修饰定义的变量为常量修饰定义的变量为常量constconst float pi=3.1425926;float pi=3.1425926;常量只能在定义时赋值,然后常量只能在定义时赋值,然后常量只能在定义时赋值,然后常量只能在定义时赋值,然后不能不能不能不能再改变其值再改变其值再改变其值再改变其值 常数、常数、常数、常数、constconst常量常量常量常量、宏常量和枚举常量,都可宏常量和枚举常量,都可宏常量和枚举常量,都可宏常量和枚举常量,都可以用来表示一个永远不会改变的数以用来表示一个永远不会改变的数以用来表示一个永远不会改变的数以用来表示一个永远不会改变的数前者不建议直接使用,而用后三者代替前者不建议直接使用,而用后三者代替前者不建议直接使用,而用后三者代替前者不建议直接使用,而用后三者代替2023/4/22C语言大学使用教程课件 制作人 苏小红31C运算符算术运算符:(+-*/%+-)关系运算符:(=!=)逻辑运算符:(!&|)位运算符 :(|&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数 :(sizeof)强制类型转换:(类型)分量运算符:(.-)下标运算符:()其它 :(()-)运算符和表达式运算符和表达式2023/4/22C语言大学使用教程课件 制作人 苏小红32 运算符功能运算符功能运算符功能运算符功能 与运算量关系与运算量关系与运算量关系与运算量关系要求运算量个数要求运算量个数要求运算量个数要求运算量个数要求运算量类型要求运算量类型要求运算量类型要求运算量类型 运算符优先级别运算符优先级别运算符优先级别运算符优先级别 结合方向结合方向结合方向结合方向 结果的类型结果的类型结果的类型结果的类型学习运算符应注意2023/4/22C语言大学使用教程课件 制作人 苏小红33算术运算符算术运算符算术运算符算术运算符+,-,*,/加、减、乘、除运算加、减、乘、除运算加、减、乘、除运算加、减、乘、除运算四则混合运算中,先算乘除,后算加减,四则混合运算中,先算乘除,后算加减,四则混合运算中,先算乘除,后算加减,四则混合运算中,先算乘除,后算加减,按从左向右的顺序计算,左结合按从左向右的顺序计算,左结合按从左向右的顺序计算,左结合按从左向右的顺序计算,左结合%求余运算求余运算求余运算求余运算结合方向:从左向右结合方向:从左向右结合方向:从左向右结合方向:从左向右优先级:优先级:优先级:优先级:-*/%*/%*/%*/%-+-+-+-+-(2)(3)(4)(2)(3)(4)(2)(3)(4)(2)(3)(4)说明:说明:说明:说明:“-”可为可为可为可为单目单目单目单目运算符时运算符时运算符时运算符时,右结合性右结合性右结合性右结合性两整数相除,结果为整数两整数相除,结果为整数两整数相除,结果为整数两整数相除,结果为整数%要求两侧均为整型数据要求两侧均为整型数据要求两侧均为整型数据要求两侧均为整型数据2023/4/22C语言大学使用教程课件 制作人 苏小红34例 5/2 =-5/2.0 =例 5%2 =-5%2 =1%10 =5%1 =5.5%22-2.51-110()函数名函数名功功 能能函数名函数名功功 能能sqrt(x)计算计算x的平方根,的平方根,x应大于等于应大于等于0 exp(x)计算计算ex的值的值fabs(x)计算计算x的绝对值的绝对值pow(x,y)计算计算xy的值的值log(x)计算计算lnx的值的值sin(x)计算计算sinx的值,的值,x为弧度值为弧度值log10(x)计算计算lgx的值的值cos(x)计算计算cosx的值,的值,x为弧度值为弧度值常用的标准数学函数2023/4/22C语言大学使用教程课件 制作人 苏小红35关系运算符关系运算符关系运算符关系运算符 ,=,=,=,!=!=大于,大于等于,小于,小于等于,等于,不等于大于,大于等于,小于,小于等于,等于,不等于大于,大于等于,小于,小于等于,等于,不等于大于,大于等于,小于,小于等于,等于,不等于关系运算符运算出的结果为关系运算符运算出的结果为关系运算符运算出的结果为关系运算符运算出的结果为0 0和非和非和非和非0 00 0,表示假,即该关系不成立,表示假,即该关系不成立,表示假,即该关系不成立,表示假,即该关系不成立非非非非0 0,表示真,即该关系成立,表示真,即该关系成立,