基本数据类型和运算符课件_第1页
基本数据类型和运算符课件_第2页
基本数据类型和运算符课件_第3页
基本数据类型和运算符课件_第4页
基本数据类型和运算符课件_第5页
已阅读5页,还剩209页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章基本数据类型和运算符10/31/20221程序设计基础(C语言)wh第2章基本数据类型和运算符10/22/20221程序程序是计算机对数据进行操作的步骤,即数据与操作构成了程序的两个要素。其中数据是程序的必要组成部分,也是程序处理的对象。在程序中,经常会使用各种数据。C语言规定,在程序中使用的每个数据都属于一种类型。10/31/20222程序设计基础(C语言)wh程序是计算机对数据进行操作的步骤,即数据与操作构成了程序的两数据类型基本类型(简单类型)构造类型其他类型整型实型(浮点型)字符型(char)枚举型(enum)数组型结构型联合型短整型(shortint)整型(int)长整型(longint)单精度型(float)双精度型(double)指针型空类型图2-1C语言数据类型不同的运算符可产生不同的表达式

10/31/20223程序设计基础(C语言)wh数据类型基本类型整型数组型短整型(shortint)单精度*本章授课内容*2.1C语言的词汇2.2数据基本类型2.3运算符和表达式2.4数据类型的转换10/31/20224程序设计基础(C语言)wh*本章授课内容*2.1C语言的词汇10/22.1C语言的词汇1.C语言字符集定义:组成C语言源程序代码的基本字符,它是构成C语言的基本元素。C语言使用的基本字符:⑴大小写英文字符:A~Z,a~z⑵数字字符:0~9⑶特殊字符:+=-_(下划线)()*&^%#!,.;:?’”~\|/<>{}[]⑷不可打印的字符:空格、换行符、制表符、响铃符10/31/20225程序设计基础(C语言)wh2.1C语言的词汇10/22/20225程序设计基础(C语2.关键字定义:具有特定含义的、专门用来说明C语言的特定成分的一类单词。C语言的关键字都用小写字母书写,不能用大写字母书写。在C89标准中共有32个关键字:auto breakcasecharconstcontinuedefaultdodoubleelseenumexternfloatregistergotosignedintlongreturnfor shortif sizeofstaticstructswitchtypedefunionunsigned voidvolatilewhile

在新的C99标准中,又增加了5个关键字:_Bool_Complex_imaginaryinlinerestrict10/31/20226程序设计基础(C语言)wh2.关键字10/22/20226程序设计基础(C语言)wh2.标识符定义:在C语言中用于标识名字的有效字符序列。C语言对标识符作如下规定:(1)标识符的第一个字符必须是英文字母或下划线(2)如果第一个字符后面还有字符序列,则它应是英文字母、下划线符或数字组成的序列。(3)标识符中的英文字母大小写是有区别的。如标识符abc与标识符ABC不相同。10/31/20227程序设计基础(C语言)wh2.标识符10/22/20227程序设计基础(C语言)wh试判断下列标识符正确与否:abcdA? Abcd2abc _Abcdab _2a3yes/no πr 10/31/20228程序设计基础(C语言)wh试判断下列标识符正确与否:abcd10/22/202284.保留标识符保留标识符是系统保留的一部分标识符,通常用于系统定义和标准库函数的名字。例如,以下划线开始的标识符通常用于定义系统变量,不能使用把这些标识符来定义自己的变量。虽然它们也是合法的标识符,但是用它们来做一般标识符可能会出现运行错误。10/31/20229程序设计基础(C语言)wh4.保留标识符10/22/20229程序设计基础(C语言)5.注释在c语言程序中,括在定界符“/*”~“*/”之间的内容是注释。注释不是程序代码,只是一种对程序解释说明的标注,编译程序把注释作为空白符跳过而不予处理。注释不允许嵌套。例如:/*学生成绩管理程序*/、/*Mycprogram*/10/31/202210程序设计基础(C语言)wh5.注释10/22/202210程序设计基础(C语言)wh2.2基本数据类型

2.2.1常量和变量2.2.2整型常量和实型常量2.2.3字符常量和字符串常量2.2.4符号常量2.2.5整型变量2.2.6实型变量2.2.7字符变量2.2.8用char定义小整数10/31/202211程序设计基础(C语言)wh2.2基本数据类型2.2.1常量和变量10/22/2.2.1常量和变量1.常量常量:在程序执行的整个过程中其值不能改变的量。例如1,3.5都是常量。①字面常量:直接以值的形式出现的常量。②符号常量:在一个程序(或程序的一部分)中指定的用标识符代表的常量,从字面上不能直接看出其类型和值。**根据其书写形式,可以区分为不同类型的常量,如整型常量、实型常量、字符常量、字符串常量等。10/31/202212程序设计基础(C语言)wh2.2.1常量和变量1.常量10/22/202212程编写求圆面积和周长的程序1:#include<stdio.h>voidmain(){doublearea(doubler),circumference(doubler);printf(“area=%f\n”,area(2.0));printf(“circumference=%f\n”,circumference(2.0));}doublearea(doubler)/*计算圆面积*/{return(3.14159*r*r);}doublecircumference(doubler)/*计算周长*/{return(2.0*3.14159*r);}

若定义一个符号代表半径可提高程序的可读性10/31/202213程序设计基础(C语言)wh编写求圆面积和周长的程序1:#include<stdio.#include<stdio.h>#definePI3.14159/*定义符号常数*/#defineR2.0/*定义符号常数*/voidmain(){doublearea(doubler),circumference(doubler);printf(“area=%f\n”,area(R));printf(“circumference=%f\n”,circumference(R));}doublearea(doubler)/*计算圆面积*/{return(PI*r*r);}doublecircumference(doubler)/*计算周长*/{return(2.0*PI*r);}编写求圆面积和周长的程序2:定义符号常量的一种方法是使用#define命令,它是一种“预编译命令”,在编译整个程序之前系统会先对程序中的预编译命令进行处理。上面#define命令的作用是在预编译时将程序中凡出现PI的地方全部以3.1415926代替,凡出现R的地方一律以2.0代替.10/31/202214程序设计基础(C语言)wh#include<stdio.h>编写求圆面积和周长的程序2②符号常量

符号常量是一种用标识符命名的常量。例如,用标识符PI代替3.14159。为了确定这种替代关系,必须先对符号常量进行定义。有两种对符号常量进行定义的方法,一种是宏定义:

#definePI3.14159

另一种是const常量:

constfloatpi=3.14159;

注意:定义const常量要以分号结束。这种方法有点类似于变量声明,但是前面加有const关键字,并且在声明时必须初始化。

10/31/202215程序设计基础(C语言)wh②符号常量符号常量是一种用标识符命名的常量。2.变量变量:在程序执行的过程中其值可以改变的量。变量都有三个特征:⑴它有一个变量名,变量名选用标识符。例如,可以用circum,area,sum_1等作为变量名。⑵变量有类型之分。例如,整型变量、实型变量、字符型变量等。⑶变量可以存放值。2.2.1常量和变量10/31/202216程序设计基础(C语言)wh2.变量2.2.1常量和变量10/22/202216程序2.2.1常量和变量

变量的值在程序运行中的可变性可以通过赋值语句表示。例如:i=3;如果在程序中连续执行两个赋值语句:i=3;i=0;

执行结果?另:C程序中的所有变量在使用之前,必须先对它进行声明。声明变量包括为变量取名和指定变量类型。例如floati,j;注意:不允许在程序的同一处将同一变量声明为不同类型。10/31/202217程序设计基础(C语言)wh2.2.1常量和变量变量的值在程序运行中的可变性可以表2-1基本数据类型和类型名关键字对应表类别类型类型名关键字简写形式字符型字符型charchar有符号字符型signedcharsignedchar无符号字符型unsignedcharunsignedchar整型基本整型intint有符号基本整型signedintsignedint短整型shortintshort有符号短整型signedshortintsignedshort长整型longintlong有符号长整型signedlongintsignedlong无符号整型unsignedintunsigned无符号短整型unsignedshortintunsignedshort无符号长整型unsignedlongintunsignedlong实型单精度实型floatfloat单精度实型floatlongfloat双精度实型doubledouble双精度长实型longdoublelongdouble10/31/202218程序设计基础(C语言)wh表2-1基本数据类型和类型名关键字对应表类别类型类型名关3.变量初始化定义:在声明变量的同时给它赋一个初始值。例如:

inta=9,b=9;floatc=1.25;intd='a'+'b';说明:

①对于几个变量赋同一初值,不可写成:inta=b=9;

②初值必须是常量或操作数是常量的算术表达式;

③初始化不是在编译阶段完成的,是在程序运行时执行本函数时赋以初值的。10/31/202219程序设计基础(C语言)wh3.变量初始化10/22/202219程序设计基础(C语言)4.数据输出的概念

printf()函数:按照指定的格式把需要输出的数据在标准输出设备(通常是终端显示器)上输出。一般格式:printf(输出格式控制,输出数据表列);其中:①“输出格式控制”是用双引号括起来的字符串,也称“转换控制字符串”。它包括两种形式的信息:一种是用于说明的信息;另一种是带有前置百分号(%)的格式转换说明,由%和格式字符组成,如%d、%c等,它的作用是将输出的数据转换为指定的格式输出。②“输出数据表列”表示需要输出的一些数据,各数据之间须用逗号隔开。输出数据的个数应与输出格式控制中的格式转换说明的个数相等,而且在顺序上要一一对应。10/31/202220程序设计基础(C语言)wh4.数据输出的概念printf()函数:按照指定的格式把【例2-2】一个程序举例。/*c2_2.c*/#include<stdio.h>voidmain(){inti=5,j;j=2;printf("i=%d,j=%d",i,j);}程序分析:程序以voidmain()开始,后面跟有一对花括号,花括号中包含数据声明部分和语句部分。凡是语句中使用的变量,都必须在数据声明部分进行声明。本程序中声明了i和j两个整型变量并对变量i进行初始化,接着对j赋值为2,最后输出i和j的值。程序运行的结果:i=5,j=210/31/202221程序设计基础(C语言)wh【例2-2】一个程序举例。10/22/202221程序设计1.整型常量十进制整型常量八进制整型常量十六进制整型常量2.2.2常量10/31/202222程序设计基础(C语言)wh1.整型常量十进制整型常量2.2.2常量10/22/202⑴.十进制整型常量①常量只能出现0-9的数字②可带正、负号③多个数字的常量前不能以0开头。

例如:01321–1210/31/202223程序设计基础(C语言)wh⑴.十进制整型常量①常量只能出现0-9的数字10/22/20⑵.八进制整型常量①八进制数字串以数字0开头②其中数字为0-7。例如:0111(十进制73)011(十进制9)0123(十进制83)07777(十进制4095)10/31/202224程序设计基础(C语言)wh⑵.八进制整型常量①八进制数字串以数字0开头10/22/20⑶.十六进制整型常量①十六进制数字串以0x或0X开头(即以0x或0X作为十六进制数的前缀)②每个数字可以是0~9、a~f或A~F中的数字或英文字母。例如:0x11(十进制17)0Xa5(十进制165)0x5a(十进制90)10/31/202225程序设计基础(C语言)wh⑶.十六进制整型常量①十六进制数字串以0x或0X开头(即以0实型常量有两种表示形式:2.实型常量①十进制小数形式:②指数形式:10/31/202226程序设计基础(C语言)wh实型常量有两种表示形式:2.实型常量①十进制小数形式:11.十进制小数形式

①包含一个小数点的十进制数字串②小数点前或后可以没有数字③小数点前或后不能同时没有数字例如:3.14159、.23、23.0、23.、0.0,-9.010/31/202227程序设计基础(C语言)wh1.十进制小数形式①包含一个小数点的十进制数字串10/

2.指数形式

由尾数和指数两部分组成。尾数在前,指数(整数)在后,尾数形式上与十进制小数形式相同,指数由代表10的符号e/E以及阶码组成,阶码必须是整数。指数形式实型常量由数字、小数点、正(或负)号和字母e(或E)组成。格式:尾数

e(或E)

+(或-)阶码相当于数学中幕底数10可带符号的整数指数十进制小数形式的常量或者十进制整型常量10/31/202228程序设计基础(C语言)wh2.指数形式由尾数和指数两部分组成。尾数在前,指数(整数例如:1e24 (表示数值1024)0.314159e+1 (表示数值0.314159×101)23.0E-1 (表示数值23×10-1)下面是不正确的实型常量:e2 (缺少十进制小数形式部分)3E (缺少阶码)4.e4.1 (不是整数阶码)10/31/202229程序设计基础(C语言)wh例如:10/22/202229程序设计基础(C语言)wh3.字符常量

⑴普通字符常量:用一对单引号括在其中的一个字符。例如:‘a’、‘A’、‘y’、‘Y’都是字符常量。注意:单引号中的字符不能是单引号或反斜杠,即‘’’、‘\’不是合法的字符常量。10/31/202230程序设计基础(C语言)wh3.字符常量

⑴普通字符常量:用一对单引号括在其中的一个字符⑵转义字符转义字符意义ASCII码值(十进制)\a响铃(BEL,turboC2.0不支持)007\n换行,将当前光标移到下一行行首010\t横向跳格,光标跳到下一个制表位009\v竖向跳格011\b退格,光标移到前一列008\r回车,光标移到本行的行首013\f换页,将光标移到下一页的页首012\\反斜杠字符“\”092\'单撇号字符“’”039\"双撇号字符“””034\?问号字符“?”063\0空字符(NULL)000\ddd任意字符(1~3位八进制数所代表的字符)\xhh任意字符(1~2位十六进制数所代表的字符)表2-2C语言中常用的转义字符

10/31/202231程序设计基础(C语言)wh⑵转义字符转义字符意义ASCII码值(十进制)说明:①字符常量中使用单引号、双引号和反斜杠时,必须使用转义字符表示,即在这些字符前加上反斜杠;②转义字符中只能用小写字母,每个转义字符只看作一个字符。③\v竖向跳格和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。④在C语言程序中,使用不可打印字符时,通常用转义字符表示。10/31/202232程序设计基础(C语言)wh说明:10/22/202232程序设计基础(C语言)wh/*打印人民币符号“”*/#include<stdio.h>voidmain(){printf(“Y\b=\n”);}这一输出只能在打印机上实现,而不能在显示器上实现。10/31/202233程序设计基础(C语言)wh/*打印人民币符号“”*/#include<stdio字符串常量:用一对双引号("")括起来的零个或多个字符序列。例如:“Hello!”、“Welcomeyou!”、“Windows”、“”等4.字符串常量10/31/202234程序设计基础(C语言)wh字符串常量:用一对双引号("")括起来的零个或多个字符序列直接输出格式说明符10/31/202235程序设计基础(C语言)wh直接输出格式说明符10/22/202235程序设计基础(C语字符串常量与字符常量的比较:①从形式上,字符常量使用单引号,而字符串常量使用双引号。②从内部存储来看,编译程序在每个字符串的尾部自动加上了一个空字符NULL(即‘\0’)作为字符串的结束标志。例如:字符串常量“a”的存储形式是:a\010/31/202236程序设计基础(C语言)wh字符串常量与字符常量的比较:①从形式上,字符常量使用单引号【例2-3】一个程序举例。/*c2_3.c*/#include<stdio.h>voidmain(){printf("Goodmorning!\n");printf("Good\0morning!\n");}程序运行后的输出结果:Goodmorning!Good注:在写字符串时不必额外加“\0”,系统会自动在字符串的末尾加上。10/31/202237程序设计基础(C语言)wh【例2-3】一个程序举例。注:在写字符串时不必额外加“\02.2.3变量1.整型变量⑴整型变量的类型①基本型:类型说明符为int,其取值为基本整常数。②短整量:类型说明符为shortint。③长整型:类型说明符为longint或long,其取值为长整常数。④无符号型:类型说明符为unsigned。⑤无符号基本型:类型说明符为unsignedint或unsigned。⑥无符号短整型:类型说明符为unsignedshort⑦无符号长整型:类型说明符为unsignedlong10/31/202238程序设计基础(C语言)wh2.2.3变量1.整型变量10/22/202238程序设计基⑵整型变量的声明整型变量声明的一般格式:类型说明符变量名标识符,变量名标识符,...;例如:inta;/*声明a为整型变量*/inta,b,c;/*声明a,b,c为整型变量*/longa,b;/*声明a,b为长整型变量*/unsigneda,b;/*声明a,b为无符号整型变量*/10/31/202239程序设计基础(C语言)wh⑵整型变量的声明整型变量声明的一般格式:10/22/202在书写变量说明时,应注意以下几点:①允许在一个类型说明符后,说明多个相同类型的变量,但各变量名之间须用逗号分隔。类型说明符与变量名之间至少应用一个空格间隔。②最后一个变量名之后必须以“;”号结尾。③变量说明必须放在变量使用之前。一般放在函数体的开头部分。10/31/202240程序设计基础(C语言)wh在书写变量说明时,应注意以下几点:10/22/202240程C语言中一般使用函数printf()进行输出。printf函数的功能:按照指定的格式把需要输出的数据在标准输出设备(通常是终端显示器)上输出。一般格式:printf(输出格式控制,输出数据表列);(3)整型变量的输出10/31/202241程序设计基础(C语言)whC语言中一般使用函数printf()进行输出。(3)整型变量C语言标准没有具体规定为整型变量分配的存储空间(字节数)的最大字节数。对于int类型变量,有的是2字节,有的是4字节,等等。例如,一个占用2个字节的int类型变量,执行赋值语句i=6;则这个值就存储在这2个字节中。

30000000000000011变量i的存储内容intii=3变量i的二进制形式存储两个字节的int变量10/31/202242程序设计基础(C语言)whC语言标准没有具体规定为整型变量分配的存储空间(字【例2-5】输出所使用的计算机的C语言中的int和longint类型变量分配的字节数。程序如下:/*c2_5.c*/#include<stdio.h>voidmain(){printf(“Typeinthasasizeof%ubyte,",sizeof(int));printf("Typelonginthasasizeof%ubyte.",sizeof(long));}程序运行结果:Typeinthasasizeof2byte,Typelonghasasizeof4byte.10/31/202243程序设计基础(C语言)wh【例2-5】输出所使用的计算机的C语言中的int和long

变量的字节个数决定变量存储值的范围。因此,在选择int类型的变量时,必须考虑该变量所能存放的最大值和最小值。如果变量的取值可能超过它的最大范围,则要考虑选择其他的类型,否则可能发生溢出的错误。例如:(按照2字节的int类型(-32768~32767)考虑)inti,j;i=30000;j=40000;j=40000超出了整型变量的最大取值范围,结果将产生溢出。

10/31/202244程序设计基础(C语言)wh变量的字节个数决定变量存储值的范围。10/22/2.实型变量⑴实型变量的类型①单精度型:类型说明符为float,其数值范围为3.4E-38到3.4E+38,有效数字为七位。②双精度型:类型说明符为double,其数值范围为1.7E-308到1.7E+308,有效数字为十六位。③长双精度型:类型说明符为longdouble。10/31/202245程序设计基础(C语言)wh2.实型变量⑴实型变量的类型10/22/202245程序设⑵实型变量的声明实型变量是用于存放实数值的变量。实型变量声明的一般格式:类型说明符变量名标识符,变量名标识符,...;例如:

floatx,y;

/*声明x,y为单精度实型变量*/

doublea,b,c;

/*声明a,b,c为双精度实型变量*/10/31/202246程序设计基础(C语言)wh⑵实型变量的声明10/22/202246程序设计基础(C语言⑶实型变量的输出实型变量的输出使用printf函数。使用printf函数输出实型变量时,其格式与输出整型变量相似。有所不同的是,实型变量格式说明为“%f”或“%lf”。#include<stdio.h>voidmain(){floata=1.0;printf(“a=%f”,a);}例如:10/31/202247程序设计基础(C语言)wh⑶实型变量的输出实型变量的输出使用printf函数。#inc【例2-6】执行如下C程序:/*c2_6.c*/#include<stdio.h>voidmain(){floata;a=30.456;printf("a=%fa=%5.2fa=%e",a,a,a);}10/31/202248程序设计基础(C语言)wh【例2-6】执行如下C程序:10/22/202248程序设程序分析:实型类型变量用“%f”格式输出时,其输出的小数位数占六位。程序中的“%5.2f”,5表示数的输出总宽度(占几个字符的位置),2表示该数的小数位数。“%e”表示按指数形式输出一个实型类型变量的值。程序运行结果:a=30.455999a=30.46a=3.04560e+0110/31/202249程序设计基础(C语言)wh程序分析:10/22/202249程序设计基础(C语言)wh3.字符型变量字符变量的类型说明符是char。字符型变量声明的格式如下:char变量名,变量名,……;例如:chara;

/*声明向a为字符型变量*/

chara,b,c;

/*声明a,b,c为字符型变量*/

10/31/202250程序设计基础(C语言)wh3.字符型变量字符变量的类型说明符是char。字符型变量声明例如:c=‘A’例如:c=“string”字符串常量字符常量65变量c的存储单元用字符常量对字符变量赋值时,也可以用ASCII码值代表对应的字符常量赋给字符变量

c=6510/31/202251程序设计基础(C语言)wh例如:c=‘A’例如:c=“string”字符串常量字符常量字符变量的值通常使用printf()函数以两种形式输出:

①以字符本身的形式输出,使用格式转换说明“%c”;

②以整型量形式输出,使用格式转换说明“%d”。例如#include<stdio.h>voidmain(){charch;ch=‘a’;printf(“%c”,ch\n);printf("%d",ch);}10/31/202252程序设计基础(C语言)wh字符变量的值通常使用printf()函数以两种形式输出:例【例2-7】执行如下程序。/*c2_7.c*/#include<stdio.h>voidmain(){charc1,c2,c3;unsignedcharc4;c1='a';c2='A';c3=98;c4=66;printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4);printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);}程序运行结果:c1=a,c2=A,c3=b,c4=Bc1=97,c2=65,c3=98,c4=6610/31/202253程序设计基础(C语言)wh【例2-7】执行如下程序。10/22/202253程序设计【例2-8】执行如下C程序:/*c2_8.c*/#include<stdio.h>#definePI3.14voidmain(){intr=3;floats;charch1,ch2='A';s=PI*r*r;ch1=ch2-'A'+'a';printf(“total=%f,ch1=%d,ch1=%c\n”,total,ch1,ch1);}程序运行结果:total=28.26,ch1=97,ch1=a10/31/202254程序设计基础(C语言)wh【例2-8】执行如下C程序:10/22/202254程序设4.用char定义小整数

当一个字符变量被赋一个字符常量时,这个字符变量的值永远都是正整型值。但是字符变量可以是负的。

标准C中增加了一个类型signedchar来明确说明是有符号的,以保证字符变量可以存放负值。在C中,由于字符变量的位数总是不能大于等于int类型的位数,所以,用字符变量只能存放小整数。可以将一个字符变量的字符值赋给int型的变量。例如:charch=‘b’;inta;a=ch;

098int变量存储char字符

10/31/202255程序设计基础(C语言)wh4.用char定义小整数当一个字符变量被算术运算符和算术表达式赋值运算与赋值表达式增量运算符与增量表达式关系运算符和关系表达式逻辑运算符和逻辑表达式条件运算符和条件表达式逗号运算符和条件表达式运算符优先级和结合方向主要内容:2.3运算符和表达式

10/31/202256程序设计基础(C语言)wh算术运算符和算术表达式主要内容:2.3运算符和表达式12.3运算符和表达式

2.3.1表达式的概念表达式:由运算符和运算对象组成的式子。它可以是常量或变量,也可以通过运算符与另一个表达式构成新的表达式。它是求值的规则。这些规则是通过表达式中的运算符来实现的。例如:3.1415926、r、3.1415926*r、3.1415926*r*r10/31/202257程序设计基础(C语言)wh2.3运算符和表达式2.3.1表达式的概念10/2例如:main(){inta=2,b=3;floatx=3.5,y=2.5;x=x+a%3*(int)(x+y)%2/4;printf(“%f”,x);}结果:3.5这是表达式!10/31/202258程序设计基础(C语言)wh例如:这是表达式!10/22/202258程序设计基础(C语按照运算符的作用不同,可将C语言中的运算符分为以下几类:⑴算术运算符:+-*/%⑵增量运算符:++--⑶赋值运算符:=⑷关系运算符:><>=<===!=⑸逻辑运算符:&&‖!⑹条件运算符:?:⑺逗号运算符:,⑻指针运算符:*&⑼位运算符:|^&<<>>~⑽长度运算符:sizeof⑾类型转换运算符:(type)⑿下标运算符:[]⒀分量运算符:.->⒁其他运算符:10/31/202259程序设计基础(C语言)wh按照运算符的作用不同,可将C语言中的运算符分为以下几类:10按照运算符在表达式中连接运算对象的个数,运算符还可以分为以下几类:⑴单目运算符:一个运算符连接一个运算对象如:-5中的负号(-)⑵双目运算符:一个运算符连接两个运算对象如:加号(+)、减号(-)、乘号(*)、除号(/)

⑶三目运算符:一个运算符连接三个运算对象如:条件运算符?:10/31/202260程序设计基础(C语言)wh按照运算符在表达式中连接运算对象的个数,运算符还可以分为在学习运算符时应注意以下几点:⑴运算符的功能⑵与运算量的关系①要求运算量的个数②要求运算量的类型⑶运算的优先级别⑷结合方向⑸结果的类型10/31/202261程序设计基础(C语言)wh在学习运算符时应注意以下几点:⑴运算符的功能10/22/202.3.1算术运算符

算术表达式:用算术运算符或圆括号将运算对象(运算分量)连接起来的式子。算术运算符:+、-、*、/、%优先级级别:一级:负号(-)二级:*/%三级:+-10/31/202262程序设计基础(C语言)wh2.3.1算术运算符算术表达式:用算术运算符或圆括号将【例2-9】将下列数学表达式改写为符合C语言规则的算术表达式。⑴

改写成C语言表达式为:3.14159*r*r/2.0⑵改写成C语言表达式为:(m*n+pow(m,n))/(sin(x)+cos(y))10/31/202263程序设计基础(C语言)wh【例2-9】将下列数学表达式改写为符合C语言规则的算术表达式注意:a/b:如果a和b都是整型量,则其商也为整型量,小数部分被舍去。如5/2结果为2,如果a、b中有一个或都是实型量,则a和b都转换为实型量,然后相除,结果为实型类型的量。如5.0/2,结果为2.5。“%”是求余运算符。如a%b,其结果为a除以b后的余数。运算符“%”要求它的两个运算对象都必须是整型量,其结果也是整型量。如5%2的结果为1。10/31/202264程序设计基础(C语言)wh注意:a/b:如果a和b都是整型量,则其商也为整型量,小数部在数学中,像5×6÷4的运算结果与6÷4×5的结果相同,都是7.5表达式5*6/4却与6/4*5的结果不一样。另外,不能出现8/(8/10)之类的表达式,应将整型常量改为实型常量:8.0/10.0。10/31/202265程序设计基础(C语言)wh在数学中,像5×6÷4的运算结果与6÷4×5的结果相同,都是使用算术表达式时,除了有些运算符的写法与数学上的习惯写法不同外,还要注意以下几点:①双目运算符两侧运算对象的类型如果相同,所得结果的类型将与运算对象的类型一致。如果类型不同,系统将按自动转换规则进行类型转换,然后再进行相应的运算。②括号可以改变表达式的运算顺序,但切记左右括号务必配对,多层括号都用圆括号“()”表示,运算时先计算内括号中表达式的值,再计算外括号中表达式的值。③当算术表达式中的运算对象为函数调用时,被调用的函数既可以是系统提供的标准库函数,也可以是用户自己编写的函数。10/31/202266程序设计基础(C语言)wh使用算术表达式时,除了有些运算符的写法与数学上的习惯写法不同2.3.2赋值运算符

1、赋值运算符和赋值表达式

赋值运算符:=

赋值表达式:由赋值运算符构造的表达式称为赋值表达式。

赋值表达式的一般格式:变量=表达式10/31/202267程序设计基础(C语言)wh2.3.2赋值运算符1、赋值运算符和赋值表达式10/2说明:⑴赋值运算符左边必须是变量而不能是常量或表达式。⑵赋值表达式的值就是赋值运算符左边变量被赋值后的值。⑶当赋值运算符“=”两侧的类型不一致时,赋值时会自动进行类型转换。⑷赋值运算可以连续进行。例如:a=b=c=20转换原则:右边左边10/31/202268程序设计基础(C语言)wh说明:转换原则:右边左边10/22/202268程2.3.2赋值运算符

2、复合赋值运算符定义:把算术运算符和赋值运算两者结合在一起形成的一种复合运算符。

注意:复合运算符在书写时,两个运算符之间不能有空格,否则就是错误的。下面5个复合运算符的等价形式:a+=b+c等价于a=a+(b+c)a-=b+c等价于a=a-(b+c)a*=b+c等价于a=a*(b+c)a/=b+c等价于a=a/(b+c)a%=b+c等价于a=a%(b+c)10/31/202269程序设计基础(C语言)wh2.3.2赋值运算符2、复合赋值运算符注意:复合运算符【例2-10】执行如下C程序:/*c2_10.c*/#include<stdio.h>voidmain(){intm;m=3;m+=m-=m*m;printf(“m=%d\n”,m);}程序运行结果:m=-1210/31/202270程序设计基础(C语言)wh【例2-10】执行如下C程序:10/22/202270程序3.赋值语句在赋值表达式的末尾加上一个分号,就构成了一个赋值语句。例如:a=b*c+d/e; /*一般算术赋值语句*/a=b=c=5; /*连续赋值语句*/a+=b; /*复合赋值语句*/10/31/202271程序设计基础(C语言)wh3.赋值语句10/22/202271程序设计基础(C语言)w【例2-11】执行如下C程序:/*c2_11.c*/#include<stdio.h>voidmain(){intm,n;m=3;n=m;printf(“n=%d\n”,n);}程序执行结果:n=310/31/202272程序设计基础(C语言)wh【例2-11】执行如下C程序:10/22/202272程序【例2-12】写出下面程序的输出结果。/*c2_12.c*/#include<stdio.h>voidmain(){inta,b,c;a=1;b=a;printf("(1)b=%d\n",b);b=a+1;printf("(2)b=%d\n",b);a=b+1;printf("(3)a=%d\n",a);c=(a+b)/2;printf("(4)c=%d\n",c);b=c+b;printf("(5)b=%d\n",b);}结果:⑴b=1⑵b=2⑶a=3⑷c=2⑸b=410/31/202273程序设计基础(C语言)wh【例2-12】写出下面程序的输出结果。结果:10/22/2【例2-13】阅读下面的程序,写出运行结果。/*c2_13.c*/#include<stdio.h>voidmain(){charch1,ch2;ch1='B';ch2='b';printf("ch1=%c,ch2=%c\n",ch1,ch2);ch1+=1;ch2-=1;printf("ch1=%d,ch2=%d\n",ch1,ch2);ch1+=ch2;ch2+=ch1;printf("ch1=%d,ch2=%d\n",ch1,ch2);}结果:ch1=B,ch2=bch1=67,ch2=97ch1=164,ch2=16110/31/202274程序设计基础(C语言)wh【例2-13】阅读下面的程序,写出运行结果。结果:10/24.表达式值的输出使用printf()函数可以将表达式的值直接输出。输出表达式的值与输出变量类似,只需将表达式直接写入printf()函数的输出数据表列中即可,输出格式控制应该与表达式的类型对应。例如程序段:inta,b;a=1;b=2;printf("sum=%d\n",a+b);printf("c=%d\n",a+=b/=b);该程序段执行结果:sum=3c=210/31/202275程序设计基础(C语言)wh4.表达式值的输出10/22/202275程序设计基础(C语2.3.3增量运算符与增量表达式++

称为自增运算符--称为自减运算符注:它们既可以前缀运算符,又可后缀运算符。举例:inti;j=i++;(功能:使变量的值加1)(功能:使变量的值减1)举例:inti;j=++i;1.增量运算符10/31/202276程序设计基础(C语言)wh2.3.3增量运算符与增量表达式++称为自增运算符举例2.增量表达式增量运算符作用于变量以后,与变量一起构成了一个新的表达式,即增量表达式。说明:1.增量运算符所作用的运算对象只能是变量,不能是常量或由运算符构成的表达式。2.增量表达式不能出现在赋值表达式的左边。3.在表达式中,前缀运算符和后缀运算符所起的作用不一样。注:慎用++或--,特别是在同一个表达式中多次出现同一个变量时不要做增量运算。例如:设i的初始值是1,则++i+i的值是多少?10/31/202277程序设计基础(C语言)wh2.增量表达式增量运算符作用于变量以后,与变量一起构成了一个【例2-14】自增运算符和自减运算符的功能的实现。/*c2_14.c*/#include<stdio.h>voidmain(){intx=5,y,z;y=x++;printf("x=%d,y=%d\n",x,y);z=++x;printf("x=%d,y=%d,z=%d\n",--x,y++,z);printf("x=%d\n",-x++);printf("x=%d,y=%d\n",x,y);}结果:x=6,y=5x=6,y=5,z=7x=-6x=7,y=610/31/202278程序设计基础(C语言)wh【例2-14】自增运算符和自减运算符的功能的实现。结果:10思考:写出下面程序运行后的结果#include<stdio.h>voidmain(){inta=0;printf("%d\n",++a);printf("%d\n",a++);printf("%d\n",a--);printf("%d\n",a);}112110/31/202279程序设计基础(C语言)wh思考:写出下面程序运行后的结果#include<stdio2.3.4关系运算符与关系表达式1.关系运算符C语言提供了6种关系运算符:<小于>大于<=小于或等于>=大于或等于==等于!=不等于优先级6高优先级7低10/31/202280程序设计基础(C语言)wh2.3.4关系运算符与关系表达式1.关系运算符优先级6高2.关系表达式定义:用关系运算符将两个表达式连接起来的式子。格式:表达式1关系运算符表达式2关系表达式的值:“真”(1)或“假“(0)。在C语言中,凡是非0的值都是“真值”,0值才是假值。例如:已知a=2,b=5,c=1,d=6,求以下关系表达式的值a>b其值为0d<=(a+c)其值为1a==b>c>=5其值为010/31/202281程序设计基础(C语言)wh2.关系表达式10/22/202281程序设计基础(C语言)【例2-15】关系运算符的使用。/*c2_15.c*/#include<stdio.h>voidmain(){inta,b,c;a=3;b=7;c=(a>b);printf("c=%d\n",c);printf("c=%d\n",a>b);}结果:c=0c=010/31/202282程序设计基础(C语言)wh【例2-15】关系运算符的使用。结果:10/22/2022【例2-16】关系运算符的使用。/*c2_16.c*/#include<stdio.h>voidmain(){inta,b,c;a=3;b=7;c=(a+1)==(b-3);printf("c=%d",c);}10/31/202283程序设计基础(C语言)wh【例2-16】关系运算符的使用。10/22/202283程序优先级别:

算术运算符(高)

关系运算符赋值运算符(低)c=a+b等效于c=(a+b)a>b!=c等效于(a>b)!=ca==b<c等效于a==(b<c)a=b>c等效于a=(b>c)例子:10/31/202284程序设计基础(C语言)wh优先级别:c=a+b等效于c=(a+b)例子:10#include<stdio.h>voidmain(){intx,y,z;x=3;y=2;z=0;x+=y+=z;printf("%d\n",x<y);z=y=x++*3;printf("%d,%d\n",y>=z,x);x=y>z>=5;printf("%d,%d,%d\n",x,y,z);}思考:写出下面程序运行后的结果01,60,15,1510/31/202285程序设计基础(C语言)wh#include<stdio.h>思考:写出下面程序运行2.3.5逻辑运算符

1.逻辑运算符!(逻辑非):是单目运算符,如!a。

若a为非零,则!a为0;若a为零,则!a为1。

&&(逻辑与):是双目运算符,如a&&b。

仅当两个运算对象的值都为非零时,结果才为1;否则,只要其中有一个运算对象为零,则结果就为0。

‖(逻辑或):是双目运算符,如a‖b。

仅当两个运算对象的值同时为0时,结果才为0;否则,结果为1。

10/31/202286程序设计基础(C语言)wh2.3.5逻辑运算符1.逻辑运算符10/22/20228思考:下面程序段的输出结果是什么?a=100;printf("%d",!(!a));110/31/202287程序设计基础(C语言)wh思考:下面程序段的输出结果是什么?110/22/202287逻辑运算符的运算法则与优先级别:高! 算术运算符 关系运算符 &&、||低 赋值运算符10/31/202288程序设计基础(C语言)wh逻辑运算符的运算法则与优先级别:高!2.逻辑表达式定义:用逻辑运算符将表达式连接起来的式子。逻辑表达式的值:逻辑真用1表示,逻辑假用0表示。当判断一个量的真假时,C语言把任何“非0”的数值都作为“真”,而仅把“0”值作为“假”。注意:逻辑运算符不按照规定的优先级计算。10/31/202289程序设计基础(C语言)wh2.逻辑表达式10/22/202289程序设计基础(C语言)【例2-17】逻辑运算符的使用。/*c2_17.c*/#include<stdio.h>voidmain(){inta,b,c;a=b=c=1;++a&&++b‖--c;

printf("%4d,%4d,%4d\n",a,b,c);--a‖++b&&c++;

printf("%4d,%4d,%4d\n",a,b,c);}结果:22112110/31/202290程序设计基础(C语言)wh【例2-17】逻辑运算符的使用。结果:10/22/202292.3.6条件运算符与条件表达式条件运算符:?:条件表达式:由条件运算符构成的的式子。格式:表达式1?表达式2:表达式3条件表达式的求值法则:表达式1条件表达式取表达式2的值条件表达式取表达式3的值真假10/31/202291程序设计基础(C语言)wh2.3.6条件运算符与条件表达式条件运算符:?:表达式1条【例2-18】通过键盘输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是,则不转换,最终将结果输出。/*c2_18.c*/#include<stdio.h>voidmain(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z')?(ch+32):ch;printf("%c\n",ch);}10/31/202292程序设计基础(C语言)wh【例2-18】通过键盘输入一个字符,判断它是否为大写字母,如#include<stdio.h>voidmain(){inta,b,c;a=1;b=2;c=3;printf("%d\n",b>c?b++:c++);printf("%d\n",b>c?c++:b++);a<b?printf("%d",c):printf("%d",b);}思考:写出下面程序运行后的结果32410/31/202293程序设计基础(C语言)wh#include<stdio.h>思考:写出下面程序运行后2.3.7逗号运算符与逗号表达式逗号运算符:,逗号表达式:用逗号运算符把两个或多个表达式连接起来的表达式。格式:表达式1,表达式2,表达式3,……,表达式n例如:a=1,b=2,c=3就是逗号表达式。逗号运算符的优先级最低,结合方向是自左向右(即左结合型),整体求值时一般均需加圆括号。10/31/202294程序设计基础(C语言)wh2.3.7逗号运算符与逗号表达式逗号运算符:,10/22【例2-19】阅读下面的程序,写出运行结果。/*ch2_19.c*/#include<stdio.h>voidmain(){intx,y=7;floatz=4;x=(y=y+6,y/z);printf("x=%d\n",x);}10/31/202295程序设计基础(C语言)wh【例2-19】阅读下面的程序,写出运行结果。10/22/201.运算符的优先级(由高到低):

初等运算符单目运算符算术运算符关系运算符逻辑运算符(“!”除外)条件运算符赋值运算符逗号运算符2.3.8运算符的优先级与结合性10/31/202296程序设计基础(C语言)wh1.运算符的优先级(由高到低):2.3.8运算符的优先级与结2、运算符的结合方向单目运算符条件运算符赋值运算符自右至左的结合方向★其他运算符则是自左向右的结合方向10/31/202297程序设计基础(C语言)wh2、运算符的结合方向单目运算符自右至左的结合方向★其他运算2.4数据类型的转换

在C中,数据类型可以转换为另一种类型。有三种类型转换的方法:1.自动转换:在表达式1+3.14159+‘0’+‘A’

出现不同类型的数据将会自动转换。转换原则是将低类型向高类型靠拢。注意:转换的过程不仅仅是自动的,而且是逐步转换的。10/31/202298程序设计基础(C语言)wh2.4数据类型的转换在C中,数据类型可以转换为另一种类型例如:floata=8.0;intb=8,c=10;分析:表达式a/(b/c)会发生错误?【例2-20】考虑如下类型的变量:chara;floatb;intc;doubled;试分析如下表达式运算过程中类型转换的状态:a+b+i+d自动转换a+b+c+dcharfloatintdoublefloat

floatdouble10/31/202299程序设计基础(C语言)wh例如:【例2-20】考虑如下类型的变量:自动转换a【例2-21】若a为float类型,x为int类型,且x值大于1,根据类型转换的原则试分析下面算术表达式的正确性。①a+2/(1/x)+2.0②a+2/(1.0/x)+2.0代价:转换要浪费CPU时间和占用一定的存储空间10/31/2022100程序设计基础(C语言)wh【例2-21】若a为float类型,x为int类型,且x值大2.强制转换强制类型转换符使用形式:(类型名)表达式其中,“(类型名)”是强制类型转换符,它将右边表达式的类型转换为括号中的类型。例如:①(int)x/*将x的类型转换为int类型*/②(char)(x+i)③设变量c、d的类型分别为char和double,则表达式c+(char)d的结果类型为int10/31/2022101程序设计基础(C语言)wh2.强制转换强制类型转换符使用形式:(类型名)表达式10/【例2-22】执行如下程序:/*c2_22.c*/#include<stdio.h>voidmain(){inti=2;floatj=3.14;printf(“i=%f,j=%d”,(float)i,(int)j);}程序运行结果:i=2.000000,j=310/31/2022102程序设计基础(C语言)wh【例2-22】执行如下程序:10/22/2022102程序设3.赋值转换10/31/2022103程序设计基础(C语言)wh3.赋值转换10/22/2022103程序设计基础(C语言)本章小结(1)数据是程序的必要组成部分,也是程序处理的对象。在程序中,不同类型的数据既可以常量形式出现,也可以变量形式出现。常量按其在程序中出现的形式分为字面量常量和符号常量。常量包括整型常量、实型常量、字符常量和字符串常量。变量在使用以前必须先定义。定义变量要使用关键字。10/31/2022104程序设计基础(C语言)wh本章小结(1)数据是程序的必要组成部分,也是程序处理表达式通过运算符可以构成更加复杂的表达式。运算符可以分为单目运算符、双目运算符和三目运算符。混合运算时按照一定的规则先将两个不同类型的数据量转换成统一的类型后再进行运算。整个转换过程是自动的而且是逐步进行的,转换的原则是由低类型转向高类型。本章小结(2)10/31/2022105程序设计基础(C语言)wh表达式通过运算符可以构成更加复杂的表达式。本章小结再见!本章结束10/31/2022106程序设计基础(C语言)wh再见!本章结束10/22/2022106程序设计基础(C语言作业课后习题10/31/2022107程序设计基础(C语言)wh作业课后习题10/22/2022107程序设计基础(C语言)第2章基本数据类型和运算符10/31/2022108程序设计基础(C语言)wh第2章基本数据类型和运算符10/22/20221程序程序是计算机对数据进行操作的步骤,即数据与操作构成了程序的两个要素。其中数据是程序的必要组成部分,也是程序处理的对象。在程序中,经常会使用各种数据。C语言规定,在程序中使用的每个数据都属于一种类型。10/31/2022109程序设计基础(C语言)wh程序是计算机对数据进行操作的步骤,即数据与操作构成了程序的两数据类型基本类型(简单类型)构造类型其他类型整型实型(浮点型)字符型(char)枚举型(enum)数组型结构型联合型短整型(shortint)整型(int)长整型(longint)单精度型(float)双精度型(double)指针型空类型图2-1C语言数据类型不同的运算符可产生不同的表达式

10/31/2022110程序设计基础(C语言)wh数据类型基本类型整型数组型短整型(shortint)单精度*本章授课内容*2.1C语言的词汇2.2数据基本类型2.3运算符和表达式2.4数据类型的转换10/31/2022111程序设计基础(C语言)wh*本章授课内容*2.1C语言的词汇10/22.1C语言的词汇1.C语言字符集定义:组成C语言源程序代码的基本字符,它是构成C语言的基本元素。C语言使用的基本字符:⑴大小写英文字符:A~Z,a~z⑵数字字符:0~9⑶特殊字符:+=-_(下划线)()*&^%#!,.;:?’”~\|/<>{}[]⑷不可打印的字符:空格、换行符、制表符、响铃符10/31/2022112程序设计基础(C语言)wh2.1C语言的词汇10/22/20225程序设计基础(C语2.关键字定义:具有特定含义的、专门用来说明C语言的特定成分的一类单词。C语言的关键字都用小写字母书写,不能用大写字母书写。在C89标准中共有32个关键字:auto breakcasecharconstcontinuedefaultdodoubleelseenumexternfloatregistergotosignedintlongreturnfor shortif sizeofstaticstructswitchtypedefunionunsigned voidvolatilewhile

在新的C99标准中,又增加了5个关键字:_Bool_Complex_imaginaryinlinerestrict10/31/2022113程序设计基础(C语言)wh2.关键字10/22/20226程序设计基础(C语言)wh2.标识符定义:在C语言中用于标识名字的有效字符序列。C语言对标识符作如下规定:(1)标识符的第一个字符必须是英文字母或下划线(2)如果第一个字符后面还有字符序列,则它应是英文字母、下划线符或数字组成的序列。(3)标识符中的英文字母大小写是有区别的。如标识符abc与标识符ABC不相同。10/31/2022114程序设计基础(C语言)wh2.标识符10/22/20227程序设计基础(C语言)wh试判断下列标识符正确与否:abcdA? Abcd2abc _Abcdab _2a3yes/no πr 10/31/2022115程序设计基础(C语言)wh试判断下列标识符正确与否:abcd10/22/202284.保留标识符保留标识符是系统保留的一部分标识符,通常用于系统定义和标准库函数的名字。例如,以下划线开始的标识符通常用于定义系统变量,不能使用把这些标识符来定义自己的变量。虽然它们也是合法的标识符,但是用它们来做一般标识符可能会出现运行错误。10/31/2022116程序设计基础(C语言)wh4.保留标识符10/22/20229程序设计基础(C语言)5.注释在c语言程序中,括在定界符“/*”~“*/”之间的内容是注释。注释不是程序代码,只是一种对程序解释说明的标注,编译程序把注释作为空白符跳过而不予处理。注释不允许嵌套。例如:/*学生成绩管理程序*/、/*Mycprogram*/10/31/2022117程序设计基础(C语言)wh5.注释10/22/202210程序设计基础(C语言)wh2.2基本数据类型

2.2.1常量和变量2.2.2整型常量和实型常量2.2.3字符常量和字符串常量2.2.4符号常量2.2.5整型变量2.2.6实型变量2.2.7字符变量2.2.8用char定义小整数10/31/2022118程序设计基础(C语言)wh2.2基本数据类型2.2.1常量和变量10/22/2.2.1常量和变量1.常量常量:在程序执行的整个过程中其值不能改变的量。例如1,3.5都是常量。①字面常量:直接以值的形式出现的常量。②符号常量:在一个程序(或程序的一部分)中指定的用标识符代表的常量,从字面上不能直接看出其类型和值。**根据其书写形式,可以区分为不同类型的常量,如整型常量、实型常量、字符常量、字符串常量等。10/31/2022119程序设计基础(C语言)wh2.2.1常量和变量1.常量10/22/202212程编写求圆面积和周长的程序1:#include<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论