2第二章C语言的基本知识_第1页
2第二章C语言的基本知识_第2页
2第二章C语言的基本知识_第3页
2第二章C语言的基本知识_第4页
2第二章C语言的基本知识_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计课程回顾1、C语言的基本结构?2、简述C语言程序的开发过程?第2章C语言的基本知识

2.1C语言的数据类型

2.2标识符

2.3常量2.4变量2.5运算符和表达式2.6自增(自减)运算符及C语言运算符的优先级别2.7不同数据类型数据间的混合运算第2章C语言的基本知识

2.1C语言的数据类型

2.2标识符

2.3常量2.1

C语言的数据类型学习目标了解C语言的数据类型掌握C语言中的基本数据类型2.1数据类型数组类型相同的数据集合结构体类型不同的数据集合基本数据类型类型名称中文名称字节数(Byte)位数(bit)数值范围备注char字符型18−128~127−27~(27−1)int整型216−32768~32767−215~(215−1)float单精度实型432−3.4×10−38~3.4×10386~7位有效数字double双精度实型864−1.7×10-308~1.7×1030815~16位有效数字

ANSIC标准规定,简单类型的前面还可以加上修饰符,使简单类型的语义更加丰富,方便C编程人员选用恰当的数据类型。这样的修饰符共有4种:

(1)signed:有符号; (2)unsigned:无符号; (3)long:长型; (4)short:短型。2.1数据类型8在线保险单年龄:_____保险总额:_____性别:_____2328340'M'数值型字符型int/floatchar2.1数据类型小练习:思考下列问题如何正确恰当的定义数据类型:

1:表示”学生成绩”

2:表示年龄

3:表示日常数值计算

4:定义中国人口的数量

5:表示“金额”(钱),”工资”

6:表示”男”,”女”2.1数据类型【例】成绩计算。#include<stdio.h>intmain(){intprogram,math,office,sum,ave;scanf(“%d,%d,%d”,&program,&math,&office);sum=program+math+office;ave=sum/3;printf(“总分是:%d,平均分是:%d\n”,sum,ave);}2.1数据类型×【例】计算并输出两个数的乘积【例】成绩计算。#include<stdio.h>intmain(){

unsignedintprogram,math,office,sum;

float

ave;scanf(“%d,%d,%d”,&program,&math,&office);sum=program+math+office;ave=sum/3;printf(“总分是:%d,平均分是:%f\n”,sum,ave);}√2.1数据类型【例】计算并输出两个数的乘积【例】成绩计算。#include<stdio.h>intmain(){unsignedintprogram,math,office,sum;floatave;scanf(“%d,%d,%d”,&program,&math,&office);sum=program+math+office;ave=sum/3;printf(“总分是:%d,平均分是:%f\n”,sum,ave);}2.1数据类型学习目标对照了解自然语言和C语言的组成要素掌握C语言中的字符集掌握C语言中标识的概念及用户定义标识的规则2.2标识符熟记C语言中的关键字自然语言与C语言组成要素对比自然语言字词句段章单词短语C语言字符标识符表达式语句函数程序按照“字-词-句-段-章”的自然语言的学习顺序学习C语言是一种非常有效的学习方法。2.2标识符字符集字符是组成语言的最基本的元素,国际上使用最广泛的计算机字符编码是ASCII码,标准的ASCII码字符集包括128个字符。字符说明字母字符包括大写字母A~Z以及小写字母a~z共52个字符数字字符包括0~9共10个字符空格符空格符(只在字符常量和字符串常量中起作用)特殊字符

!%*&∧_(下划线)+=~<>/\′″;.()[]{}2.2标识符标识符标识符就是用来标识在C语言程序中出现的符号常量名、变量名、函数名的字符序列,C语言中的标识符是由字符组成,满足一定的构成规则。

C语言规定,标识符由字母、数字、下划线组成,且第一个字符不能使用数字字符。

例如:a、_3x、BOOK1、sum5、student_1都是合法的标识符,而-3x、bowy-1、3Student、$Map、Sum@Mul、a>b等是不合法的,不能用作C语言的标识符。2.2标识符1.标识符只能以字母或者下划线开头。2.标识符只能由字母、数字、下划线三种字符组成。3.系统已经定义的一些标识符和关键字是系统专用的,不允许用户作为自定义对象的标识符来使用。4.C语言将大小写字母作为不同的字符处理。5.自定义标识符一般应做到见名知义,以提高程序的可读性。例如:name/xingming(姓名)、age/nianling(年龄)小结:标识符命名规则是什么?2.2标识符下列标识符是否合法,为什么?suma1b2s_name123#ssa.b.c1a8bc思

?合法不合法2.2标识符intfloatdoublecharlongshortsignedunsignedvoidunionstructenumifelseswitchcasewhilefordocontinuebreakgotodefaultreturnregisterexternautostaticvolatileconsttypedefsizeof关键字关键字是系统定义的、具有特定含义、专门用作特定用途的C语言标识符,也称为保留字。标准C语言中共有32个关键字。附:关键字关键字关键字是系统定义的、具有特定含义、专门用作特定用途的C语言标识符,也称为保留字。标准C语言中共有32个关键字。(1)数据类型关键字(12个):char,double,float,int,long,short,signed,unsigned,struct,union,enum,void(2)控制语句关键字(12个):break,continue,if,else,switch,case,default,while,do,for,goto,return,(3)存储类型关键字(4个):auto,extern,register,static(4)其它关键字(4个):const,sizeof,typedef,volatile附:关键字2.3常量学习目标理解常量的概念熟练掌握整型、实型及字符型常量的定义和使用2.3常量在程序运行过程中其值保持不变的量称为常量。

直接常量是直接以自身的存在形式体现值和类型的,例如,123,-5是整型常量,1.5,1.2E-2是实型常量,’x’是字符常量,”first”是字符串常量。

(1)八进制整型常量其形式是:0d其中,起始0是必须的引导符,d可以是一个或多个八进制数(0~7之间)。进位规则为:逢八进一。(2)十进制整型常量其形式是:d其中,d可以是从0~9的一个或多个十进制数位,第一位不能是0。进位规则为:逢十进一。(3)十六进制整型常量其形式是:0xd其中,引导符0是必须的,字母X可以用大写或小写,d可以是一个或多个十六进制数(从0~9的数字,或是从’a’到’f’的字母)。进位规则为:逢十六进一。整型常量在C语言中整型常量可以表示为十进制、八进制和十六进制三种形式。2.3.1整型常量整型常量整型常量可以分为以下几类:(1)基本整型类型说明符为int,在内存中占2个字节,其取值范围为-32768~32767。(2)短整型类型说明符为shortint或short,在内存中所占字节数和取值范围均与基本整型相同。(3)长整型类型说明符为longint或long,在内存中占4个字节,其取值范围为

-2147483648~2147483647,一般会在数值后加一下L。(4)无符号型类型说明符为unsignedint或unsigned,此类型的整数没有负数,一般会在数值后加一下U。

2.3.1整型常量1、二进制与十进制间的相互转换(2进制,用两个阿拉伯数字:0、1;)2、八进制与十进制的转换(8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;)3、十六进制与十进制的转换(16进制,用十个阿拉伯数字:0到9+字母:ABCDEF)4、十进制数转化成非十进制数(一)整数类型--进制转化2.3.1整型常量(一)整数类型--进制转化2.3.1整型常量二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设二进制数:01100100,转换为十进制为:下面是竖式:第0位0*2的0次方=0第1位0*2的1次方=0第2位1*2的2次方=4第3位0*2的3次方=0第4位0*2的4次方=0第5位1*2的5次方=32第6位1*2的6次方=64第7位0*2的7次方=0+

--------------------------1001、二进制与十进制间的相互转换2.3.1整型常量练习:01010001转换为10进制是多少?2、八进制与十进制间的相互转换八进制数采用0~7这八数来表达一个数.八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……设有一个八进制数:01507,转换为十进制为:用竖式表示:第0位7*8的0次方=7第1位0*8的1次方=0第2位5*8的2次方=320第3位1*8的3次方=512+------------------------839练习:0724转换为10进制是多少?2.3.1整型常量3、十六进制与十进制间的相互转换十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……假设十六进数0X2AF5,那么如何换算成十进制呢?用竖式计算:第0位:5*16的0次方=5第1位:F*16的1次方=240第2位:A*16的2次方=2560第3位:2*16的3次方=8192+-----------------------------------10997练习:OX19C2转换为10进制是多少?2.3.1整型常量301)十进制转化二进制10进制数转换成二进制数,这是一个连续除2的过程:要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。思考:120转换为八进制和十六进制分别为多少。2.3.1整型常量4、十进制数转化成非十进制数--取余倒排法2.3.1整型常量整型数据在内存中是以二进制方式存放的,最高位为符号位,并以补码表示。将一个十进制整数转化为补码表示的方法如下:(1)对于正数,其补码表示与原码相同。(2)对于负数,其补码表示为它的反码加1;负数的反码为其绝对值的所有位(含符号位)取反得到。例如:求-10的补码的方法是:①取-10的绝对值10;②10的绝对值的二进制形式为:0000000000001010(一个整数占16位);③对0000000000001010取反得到:1111111111110101;④再加1得1111111111110110。2.3.1整型常量2.3.2实型常量

实型数据又称为浮点型数据,是带小数部分的数据。C语言中的实数只能用十进制来表示。根据能够表示的大小和精度,浮点型数据分为单精度、双精度两类,类型说明符分别为float和double。浮点型数据在内存中以指数形式存储。C语言将一个浮点型数据分成小数和指数两个部分存储。例如,实数3.14159在内存中的存放形式如图所示。(1)十进制小数形式由正负号、数码0~9和一个小点组成。例如.123//表示实数0.123-.123//表示实数-0.123123.//表示实数123.0(2)指数形式由十进制小数或整数与字母e或E组成。一般形式如下:

aEn或aen表示数a×10的n次方要求:字母e或E前面必须有数字,a可以是十进制小数或整数,n必须为十进制整数。实型常量在C语言中,实型常量有两种表示形式:十进制小数形式和指数形式。2.3.2实型常量实型常量实型常量可以分为以下3类:(1)单精度型类型说明符为float,在内存中占4个字节,其取值范围的绝对值为10(-38次方)~10(38次方),提供6~7位有效数字。(2)双精度型类型说明符为double,在内存中占8个字节,其取值范围的绝对值为10(-308次方)~10(308次方),提供15~16位有效数字。(3)长双精度型类型说明符为longdouble,在内存中占10个字节,其取值范围的绝对值为10(-4932次方)~10(4932次方),提供18~19位有效数字。2.3.2实型常量2.3.3字符型常量

字符常量是用单引号

'

'

括起来的一个字符。如'a','B'等都是字符常量。其中单引号是作为字符常量的定界符使用,并不表示字符常量本身。C语言中常用的字符常量有一般字符常量和转义字符常量两种。(1)一般字符常。是用单引号括起来的一个字符。该字符可以是数字、字母等ASCII字符集中除“’”和“\”以外的所有可显示字符。(2)转义字符。转义字符是一种特殊的字符常量。转义字符以反斜杠“\”开头,后面加上一个数字或字符的特殊表示形式,用于表示ASCII码字符集内的控制代码和某些功能定义。我们称为“反斜杠字符常量”或者“转义字符”。“转义字符”代表一个字符,在内存中只占用一个字节。字符常量2.3.4字符型常量2.3.4字符型常量

多个单独的字符构成字符串。C语言允许的字符串常量是由一对双引号"

"括起来的字符序列。例如:"A"

"CHINA""1234"""//空字符串"Isaid,\"goodmorning!\""//含转义字符(1)字符串常量的存储方式字符串常量存储时,按字符串中字符从左到右的顺序依次占用连续的存储单元,每个字符占1个字节,存放其对应的ASCII码。C编译系统还会自动在每个字符串常量的未尾追加一个零字符NULL('\0')作为字符串的结束标识。2.3.4字符串常量例如:字符串常量

"goodbye"含有7个字符,它将占用8个字节的存储单元。字符串常量2.3.4字符串常量字符串常量和字符常量是不相同的量,其区别如下:(1)从表示形式上看,字符常量是由单引号括起来的,字符串常量是由双引号括起来的。(2)从字符的个数上看,字符常量只能是单个字符,字符串常量可以包含0个或多个字符。(3)有字符变量,但没有字符串变量。(4)字符常量在内存中占1个字节,字符串常量在内存中的字节数是字符个数加1。因为C语言规定,每一个字符串的末尾加一个字符串结束标志\0。【例】计算程序。#include<stdio.h>voidmain(){floatr,s,v;scanf(“%f”,&r);s=2*3.1415926*r;v=3.1415926*r*r;printf(“周长为:%f,表面积是:%f\n”,s,v);}不理想2.3.5符号常量2.3.5符号常量在程序运行过程中其值保持不变的量称为常量。常量可以分为符号常量和直接常量两种。

符号常量是采用宏定义命令定义的常量。定义形式如下:

#define符号常量名常量例如:#defineNULL0用符号常量NULL来替代常量0.

要注意的是,每个符号常量定义式一次只能定义一个符号常量,且每个符号常量定义式占据一行。【例】计算程序。#include<stdio.h>#definePI3.14159intmain(){floatr,s,v;;scanf(“%f”,&r);s=2*PI*r;v=PI*r*r;printf(“周长为:%f,表面积是:%f\n”,s,v);}2.3.5符号常量√小结:常量常量的本质不占据任何存储空间属于指令的一部分,编译后不再更改常量分为整型常量、实型常量、字符常量、字符串常量和符号常量小结标识符命名规则C语言有哪些基本数据类型?变量的命名规则和声明及使用?常量命名规则和声明及使用?预习

2.4变量

2.5运算符和表达式课程回顾1、标识符的命名规则?2、C语言有哪些基本数据类型?3、简述C语言常量基本类型?第2章C语言的基本知识2.1数据类型2.2标识符和关键字2.3常量2.4变量2.5运算符和表达式2.6运算符的优先级

2.7不同数据类型数据间的混合运算【例】计算并输出两个数的乘积【例】成绩计算。#include<stdio.h>intmain(){

unsignedintprogram,math,office,sum;

floatave;scanf(“%d,%d,%d”,&program,&math,&office);sum=program+math+office;ave=sum/3;printf(“总分是:%d,平均分是:%f\n”,sum,ave);}√2.4变量2.4变量学习目标理解变量的概念熟练掌握整型、实型及字符型变量的定义和使用变量在程序运行过程中其值可以被改变的量称为变量。变量在内存中根据其数据类型占据一定的存储单元。变量的定义C语言中的变量遵循“先定义,后使用”的原则,就是必须先对将要使用的变量进行变量定义,说明变量的数据类型,然后才能使用该变量。变量定义的一般形式为:

数据类型符变量名表例如:inta;//定义整型变量a2.4.1变量名称变量的初始化

C语言中允许在变量定义的同时对变量赋初始值,也称为变量的初始化。例如:

inta=2;

charc=‘x’;floatx=1.2,y=2.4;2.4.1变量名称变量的基本操作

一个变量可以看成是一个存储数据的容器。有两个对变量的基本操作:

一是向变量中存入数据,这个操作被称为“赋值”;二是取得变量当前的值,以便在程序运行时使用,这个操作被称为“取值”。2.4.1变量名称整型变量整型变量可以分为以下几类:(1)基本整型类型说明符为int,在内存中占2个字节,其取值范围为-32768~32767。(2)短整型类型说明符为shortint或short,在内存中所占字节数和取值范围均与基本整型相同。(3)长整型类型说明符为longint或long,在内存中占4个字节,其取值范围为

-2147483648~2147483647,一般会在数值后加一下L。(4)无符号型类型说明符为unsignedint或unsigned等

,此类型的整数没有负数,一般会在数值后加一下U。

2.4.2变量类型—整型变量实例分析#include<stdio.h>intmain(){ inta,b,c,d;//定义a、b、c、d为基本整型变量

unsignedu;//定义u为无符号基本整型变量

a=10;b=-20;u=5; c=a+u; d=b-u;

printf("c=%d,d=%d\n",c,d);

return0;}程序运行结果如下:c=15,d=-252.4.2变量类型—整型变量实型变量实型变量可以分为以下2类:(1)单精度型类型说明符为float,在内存中占4个字节,其取值范围的绝对值为10(-38次方)~10(38次方),提供6~7位有效数字。(2)双精度型类型说明符为double,在内存中占8个字节,其取值范围的绝对值为10(-308次方)~10(308次方),提供15~16位有效数字。2.4.2变量类型—实型变量实例分析#include<stdio.h>intmain(){ floata,b;//定义a、b为单精度浮点型变量

doubled;//定义d为双精度浮点型变量

a=3.56;b=12345.678; d=12345.6789;

printf("%f,%f,%f\n",a,b,d);

return0;}程序运行结果如下:3.560000,12345.677734,12345.6789002.4.2变量类型—实型变量字符变量

字符型(char)变量内存放的是字符型常量,在内存单元中仅占一个字节。在实际的程序中,其内存中存放的是该字符的ASCII码,因此字符型变量也可存贮数值范围为0~255(无符号字符型)或-128~127(有符号字符型)之间的整型常数。2.4.2变量类型—字符型变量实例分析#include<stdio.h>intmain(){shortintn=97;//字符'a'的ASCII码为97printf("%d,%c,%d,%c\n",n,n,n+1,n+1);

return0;}程序运行结果如下:97,a,98,b2.4.2变量类型—字符型变量程序说明

字符’a’的ASCII码为97,变量n以整型数据方式输出时为97,以字符方式输出时为’a’,如图所示;n+1的结果为98,字符’b’的ASCII码为98,n+1以整数方式输出时为98,以字符方式输出时为’b’。2.4.2变量类型—字符型变量【例】计算并输出两个数的乘积【例】成绩计算。#include<stdio.h>intmain(){

unsignedintprogram,math,office,sum;

floatave;scanf(“%d,%d,%d”,&program,&math,&office);sum=program+math+office;ave=sum/3;printf(“总分是:%d,平均分是:%f\n”,sum,ave);}√2.4变量2.4.3变量的赋值变量经过定义后,在使用之前用户就要给变量赋值。C语言中是通过赋值运算符或者赋值语句给变量赋值。变量的赋值格式:

变量名=表达式;要注意这个格式中的“=”是赋值符号而不是等号。例如:inti;i=9;/*先定义整型变量i,再给i初值为9*/小结:变量变量:程序运行时可以随时改变定义变量时,给变量分配存储单元(如:一个字节),如宿舍号码对应一个房间,变量名对应一段存储空间。通过变量对内存修改、存取;对变量的存取就是对存储单元的存取。要先定义变量的类型,决定占用的内存空间,才能存取。变量的数据类型、字节长度、位数、数据范围课程回顾1、请说出C语言的基本数据类型在VC中各占多少字节?2、请指出下面程序有哪些错误?#include<stdio.h>voidmain()

{inta,b,c;scanf(“%d,%d”,a,b);c=a;

b=a;c=b;printf(“a转换后的值为,b转换后的值为”,a,b);}2.5运算符和表达式学习目标熟练掌握C语言提供的各种运算符能够应用运算符构建相应的表达式基本概念

运算是对各种类型数据进行加工处理,运算符是指各种不同运算类型的符号。

按照运算对象的个数可以将运算符分为单目运算符、双目运算符和三目运算符;2.5运算符和表达式C语言的运算符2.5运算符和表达式使用C语言的运算符的注意事项1.运算符的功能2.运算符的优先级3.运算符的结合性4.运算结果及其表示2.5运算符和表达式2.5.1算术运算符及算术表达式算术运算符

C语言算术运算符可以分为基本算术运算符、自增、自减运算符和正负号运算符三类。(1)基本算术运算符

基本算术运算符包括5种:+(加)、-(减)、*(乘)、/(除)、%(取余)。(2)自增和自减运算符

C语言中的自增运算符为++,自减运算符为--,都是单目运算符,具有右结合性。运算符“++”表示操作数加1,运算符“--”表示操作数减1。(3)正负号运算符

正负号运算符是单目运算符,如-a,-b,-5,+8等。2.5.1算术运算符及算术表达式算术运算符

C语言算术运算符可以分为基本算术运算符、自增、自减运算符和正负号运算符三类。(1)基本的算术运算符和正负号运算符:+

(加法运算符,或正值运算符。如:3+5、+3)-

(减法运算符,或负值运算符。如:5-2、-3)*(乘法运算符。如:3*5)/

(除法运算符。如:5/3)%

(模运算符,或称求余运算符,%两侧均应为整

型数据,如:7%4的值为3)。基本算术运算符:

结合方向:从左向右优先级:

-\+、---->*/%----->+-(1)(2)(3) 说明:“-\+”代表正、负号时,可为单目运算符两整数相除,结果为整数%要求两侧均为整型数据例

5/2=

-5/2.0=例

5%2=

-5%2=

1%10=

5%1=

5.5%22-2.51-110(X)2.5.1算术运算符及算术表达式#include<stdio.h>intmain(){printf("%d,%d\n",20/7,-20/7);printf("%f,%f\n",20.0/7,-20.0/7);printf(“%d\n”,100%3);return0;}2,-22.857143,-2.85714312.5.1算术运算符及算术表达式(2)

自增、自减运算符(作用是使变量的值增1或减1)++i,--i(在使用i之前,先使i的值加

(减)1)

i=3;

j=++i;

i的值先变成4,再赋给j,j的值均为4i++,i--(在使用i之后,使i的值加(减)1)

j=i++;

先将

i的值3赋给j,j的值为3,然后i变为42.5.1算术运算符及算术表达式实例分析//FileName:chap2_6.c#include<stdio.h>intmain(){inti,k; i=5;k=++i;//赋值时,i先增1,再将i的值赋给k

printf("k=%d,i=%d\n",k,i);

i=5;k=--i;//赋值时,i先减1,再将i的值赋给k

printf("k=%d,i=%d\n",k,i);

i=5;k=i++;//赋值时,先将i的值赋给k,再将i增1

printf("k=%d,i=%d\n",k,i);

i=5;k=i--;//赋值时,先将i的值赋给k,再将i减1

printf("k=%d,i=%d\n",k,i); return0;}在使用自增自减运算符时,应注意以下几个问题。①自增和自减运算符的优先级高于基本算术运算符。②自增和自减运算符的操作数只能是变量,不能是常量和表达式。程序运行结果如下:k=6,i=6k=4,i=4k=5,i=6k=5,i=42.5.1算术运算符及算术表达式注意:

(1)自增运算符(++),自减运算符(--),只能用于变量,而不能用于常量或表达式,如5++,(a+b)++。

(2)++和--的结合方向是“自右至左”。

优先级:-、+、--、++-------->*/%----->+-

(1)

(2)

(3)例

-i++

-(i++)i=3;printf(“%d”,-i++);//-例

j+++k;(j++)+k;例

-i++i=3;printf(“%d”,-i++);

自增(减)运算符常用于循环语句中使循环变量自动加1。2.5.1算术运算符及算术表达式算术表达式用算术运算符将运算对象连接起来,符合C语法规则,并能说明运算过程的式子,称为算术表达式。

算术达表式的构成规则如下:(1)数值型常量、数值型变量、数值型函数调用;(2)+(算术表达式)、-(算术表达式);(3)++整型变量、--整型变量、整型变量++、整型变量--;(4)(算术表达式)双目算术运算符(算术表达式);(5)有限次使用上述规则获得运算式也是算术表达式。

2.5.1算术运算符及算术表达式【例】计算并输出两个数的乘积【例】计算器加法模块。#include<stdio.h>intmain(){

intnumber1,number2,sum;scanf(“%d%d”,&number1,&number2);sum=number1+number2;printf(“%d+%d=%d\n”,number1,number2,sum);}√2.5运算符和表达式请同学分别完成减法\乘法\除法\求余等相应模块2.5.2关系运算符及关系表达式关系运算符关系运算实际上就是比较运算,将给定的两个运算对象过行比较,判断比较的结果是否符合给定的条件,若符合条件为“真”,否则为“假”。关系运算符及其优先次序:<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)优先级相同(高)优先级相同(低)说明:关系运算符的优先级低于算术运算符关系运算符的优先级高于赋值运算符2.5.2关系运算符及关系表达式关系表达式关系表达式具体构成规则如下:

表达式关系运算符表达式关系表达式的值为逻辑值,逻辑值有true(用整数1表示)和false(用整数0表示)。例:a>b,a+b>b+c关系表达式的值是一个逻辑值,即“真”或“假”。例:关系表达式”a>b”的值为“真”,表达式的值为1。2.5.2关系运算符及关系表达式例如:inta=3,b=2,c=1,d,f;

a>b(a>b)==cb+c<a

d=a>b

f=a>b>c//表达式值1//表达式值1//表达式值0//d=1//f=02.5.2关系运算符及关系表达式2.5.3逻辑运算符及逻辑表达式逻辑运算符

ANSIC标准规定,参与逻辑运算的操作数可以不是逻辑值,该操作数为非0时表示真,为0时表示假,但逻辑运算的结果只可以取逻辑值(真或假),返回值为1或0。逻辑运算真值表a&&b若a,b为真,则a&&b为真。a||b若a,b之一为真,则a||b为真。

!a若a为真,则!a为假。2.5.3逻辑运算符及逻辑表达式!&&||高低优先级:例

a<=x&&x<=b

a>b&&x>ya==b||x==y!a||a>b//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)2.5.3逻辑运算符及逻辑表达式逻辑表达式

用逻辑运算符和圆括号将操作数连接起来的、符合C语法规则的式子称为逻辑表达式。具体构成规则如下:

单目逻辑运算符表达式

表达式双目逻辑运算符表达式

2.5.3逻辑运算符及逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子就

是逻辑表达式。逻辑表达式的值应该是一个逻辑量“真”或“假”。例:设a=4,b=5:

!a的值为0

a||b的值为1

a&&b的值为1

!a||b的值为1

4&&0||2的值为1‘c’&&‘d’的值为1任何非零的数值被认作“真”逻辑表达式2.5.3逻辑运算符及逻辑表达式例:5>3&&8<4-!0

自左向右运算

1&&0逻辑值为08<3逻辑值为04-1值为3!0逻辑值为15>3逻辑值为1表达式值为02.5.3逻辑运算符及逻辑表达式逻辑运算的短路特性

在逻辑表达式求解时,并不是所有的逻辑运算符都要被执行,当表达式的运算结果能够确定以后,运算过程将立即终止,后面的部分不予执行。这种现象称为逻辑运算符的短路现象,也叫懒惰求值法。具体情况如下。(1)x&&y&&z

只有x为真(非0)时,才需要判断y的值,只有x和y都为真的情况下才需要判断z的值。(2)x||y||z

只有x为假,才需要判断y的值,只有x和y都为假才需要判断z的值。2.5.3逻辑运算符及逻辑表达式2.5.4赋值运算符及赋值表达式赋值运算符赋值运算符(=)用于赋值运算,是C语言中最基本的运算符,分为基本的赋值运算和复合赋值运算。由”=”连接的式子称为赋值表达式。(1)基本赋值运算符的符号为“=”,作用是将右侧的表达式赋值给左侧的变量,是双目运算符。由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。(2)复合的赋值运算,在赋值运算符“=”之前可以加上算术运算符或移位运算符构成复合的赋值运算符。C语言规定可以使用10种复合赋值运算符,分别为:

+=、−=、*=、/=、%=、<<=、>>=、&=、^=、|=

【例】假设变量x=10,y=20,计算各赋值表达式的值。(1)x+=10(2)x*=y+20(3)x+=x−=x/10实例分析计算结果:(1)20(2)400(3)18自左向右运算

2.5.4赋值运算符及赋值表达式2.5.5条件运算符及条件表达式

条件运算符(?:)是C语言中唯一的一个三目运算符,其目的是进行条件判断。条件运算符的一般格式为:

表达式1?表达式2:表达式3

条件运算符的运算规则可以描述为:如果“表达式1”的值为非0(即逻辑真),则运算结果等于“表达式2”的值;否则,运算结果等于“表达3”的值#include<stdio.h>main(){inta,b,min;printf("inputa,b:");scanf("%d,%d",&a,&b);printf("%d,%d",a,b);min=a<b?a:b;printf("minis%d\n",min);}实例分析编写一个程序,输入两个数,判断输出最小的数值。2.5.5条件运算符及条件表达式#include<stdio.h>intmain(){intn;

printf("输入一个整数n:");

scanf("%d",&n);

printf("%d是一个%s\n",n,(n%2==0?"偶数":"奇数"));

return0;}实例分析程序运行结果如下:输入一个实数n:5↙5是一个奇数编写一个程序,输出用户输入的整数是奇数还是偶数。2.5.5条件运算符及条件表达式2.5.6逗号运算符及逗号表达式

C语言提供一种特殊的运算符—逗号运算符。其功能是用它将两个表达式连接起来,组成一个表达式,称为逗号表达式。逗号表达式的一般形式如下:

表达式1,表达式2

逗号表达式的运算过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。#include<stdio.h>intmain(){

inta=2,b=4,c=6,x,y;

y=((x=a+b),(b+c));

printf("y=%d,x=%d\n\n",y,x);

return0;}实例分析程序运行结果如下:y=10,x=62.5.6逗号运算符及逗号表达式2.5.7sizeof运算符及sizeof表达式

sizeof运算符用来获得一个数据或数据类型在内存中所占空间的字节数。sizeof表达式的一般形式如下:

sizeof(表达式)

sizeof(数据类型名)

#include<stdio.h>intmain(){inta=2;

printf("%d,",sizeof(int));

printf("%d,",sizeof(long));

printf("%d,",sizeof(float));

printf("%d,",sizeof(double));

pr

温馨提示

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

评论

0/150

提交评论