数据类型和表达式_第1页
数据类型和表达式_第2页
数据类型和表达式_第3页
数据类型和表达式_第4页
数据类型和表达式_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

数据类型和表达式2数据类型运算符及表达式赋值运算符与赋值表达式自增与自减运算符关系运算符与关系表达式数据类型常量与变量标识符、关键字及分隔符条件运算符与条件表达式逗号运算符与逗号表达式长度运算符本章内容算术运算符与算术表达式逻辑运算符与逻辑表达式第3章数据类型及表达式3第3章数据类型及表达式重点和难点重点:

(1)变量的定义与使用

(2)各种运算符及表达式的使用难点:

(1)数据类型的转换

(2)自增与自减运算符的使用43.1数据类型及表达式引例【例3.1】实现输入一个职工的姓名、年龄、工资的程序并输出。#include<stdio.h>main(){charemployname[6];intemployage;floatemploywage;printf("请输入职工姓名:");scanf("%s",employname);printf("请输入职工年龄:");scanf("%d",&employage);printf("请输入职工工资:");scanf("%f",&employwage); printf(“此职工姓名:%s年龄:%d工资:%0.2f\n",employname,employage,employwage);}53.2

C语言的数据类型标识符、关键字及分隔符数据类型常量与变量61.标识符

C语言中,变量,函数都需要有一个名称,这个名称就叫做标识符。

C语言标识符命名规则:(1)标识符由字母(A~Z,a~z)、下划线(_)、数字(0- 9)组成。(2)标识符必须以字母(A~Z,a~z)或下划线(_)开头。(3)C语言中标识符严格区分字母大小写。如:aB12、 Ab12、AB12、ab12是不同的标识符。(4)标识符不能使用C语言的关键字,如:char、do、for、 if、int等。3.2.1标识符、关键字及分隔符73.2.1标识符、关键字及分隔符用户在定义标识符时还要注意以下几个问题:(1)标识符时尽量做到“见名知意”。(2)标识符的长度不要太长,建议在8个字符以 内。(3)标识符中不能出现全角字符与空格。下列标识符是不合法的标识符:

5abc、aa-bb、a&b、、a#、ab¥、if下列标识符的是合法的标识符:

A123、a_123、_123、Aa_B029b82.关键字关键字是C语言编译程序本身所规定使用的专用词,它们有特定的含义。如int用来定义整数类型。所有的C语言关键字不能用作标识符,关键字必须用小写字母表示。C语言的关键字如表3-1所示。标识符、关键字及分隔符表3-1ANSIC标准规定的关键字93.分隔符分隔符用来使编译器确认代码在何处分隔,C语言中分隔符包括注释符、空白符及普通分隔符。(1)注释符用“/*”开头以“*/”结尾,中间可以写一行或多行内容,之间的内容对程序的执行没有任何影响,被编译器忽略。在程序中加入注释可增加程序可读性,使程序利于维护与移交。 如:inta,b;/*定义了a,b两个变量*/(2)空白符空白符包括空格、回车、换行和制表符(Tab键)符号,用来分隔程序的各基本成分。一个或多个空白符的作用完全一样。3.2.1标识符、关键字及分隔符10(3)普通分隔符普通分隔符的作用也是用来分隔程序的各成分,在程序中有特定的含义。不能省略。3.2.1标识符、关键字及分隔符表3-2C语言的普通分隔符11C语言的数据类型分为:基本数据类型:整型、字符型、实型、空类型。构造类型: 数组型、结构体型、共用体型、 枚举类型、指针类型。本章主要介绍基本数据类型。3.2.2数据类型12

常量与变量1.常量

在程序执行过程中,值不能发生改变的量称为常量。(1)整型常量不含小数的整数值,由数字0~9组成,前面可加正号“+”或负号“-”。可采用十进制、八进制、十六进制形式表示。十进制常量以非0开头后跟多个0~9之间的数字,如351、+78、-98。八进制常量以0开头后跟多个0~7之间的数字,如0745、-0123、+0351。十六进制常量以0和字母x(或X)开头后跟多个0~9之间的数字或字母a~f之间的小写字母或A~F之间的大写字母,如0x456、0X456f、-0X123FF、0xa4d5、+0x9abf。 下面3条语句:

printf("%d\n",28); printf("%d\n",034); printf("%d\n",0x1c);

输出3个28,这是把28分别以十进制、八进制、十六进制形式表示。

13(2)实型常量

C语言中实型常量有两种表示方法:①十进制形式:由数字和小数点组成,且必须有小数点,如123.0、-0.123、-.369、0.1、0.0。②科学计数法形式:由整数部分、小数点、小数部分、e(或E)、指数部分组成。要求e(或E)后面指数部分必须为整数,e(或E)前要有数字。如:0.2468E3、2.468e2、2.468E+2都表示246.8,而、e36、、E+898为非法表示。

常量与变量14(3)字符型常量 字符常量是用一对单引号括起来的单个字符。它是ASCII码字符集里的字符。

C语言中字符常量的类型是char型。

C语言中字符常量有3种表示方法:①用单引号括起来的一个ASCII字符。如:‘a’、‘A’、‘0’、‘=’、‘5’、‘+’。②直接用该字符的ASCII码的数值表示一个字符常量。如97可表示字符‘a’,48可表示字符‘0’,10可表示换行符。③用“\”后面连一个特定的字母或特定符号或1到3位八进制数或1到2位十六进制数并用单引号括起,这样的组合又有了其它的意义,称之为转义字符。如:‘\n’、‘\0’、‘\104’、‘\’。

常量与变量15常见的转义字符见下表3-3。16【例3.2】分析下面程的输出结果。#include<stdio.h>main(){printf("0123456789\n");printf("abc\tde\babc\n");printf("abcdea\rbcde\n");printf("abcdea\nbcde\n");}程序运行后,屏幕显示:0123456789abcdabcbcdeeaabcdeabcdePressanykeytocontinue17(4)字符串常量 字符串常量是由双引号括起来的由多个字符组成的字符序列。如:“JohnWilson”、“张三”、“A-32_64”、“123.456789”、“a”。 注意:不要将字符串常量与字符常量混淆,如下:“a”与‘a’是不同的,一个是字符串常量一个是字符常量。注:C语言在存储字符串常量时要开辟字符串中字符数+1的字节的空间,多出的那个字节用来存放‘\0’,它用来表示字符串的结束。字符串常量“A6029”这个字符串是如下方式存放的:因此字符串“A6029”在内存中占用6个字节。

常量与变量18(5)符号常量在C语言中可用一个标识符来表示一个常量,有两种使用方法。①用#define形式定义符号常量。格式:#define常量名常量值如:#defineMAX10#defineMIN0#defineDOLLARtoRMB6.82652分别用MAX、MIN、DOLLARtoRMB这三个标识符来代替常量10、0、6.82652这三个常量,在程序的运行过程中MAX、MIN、DOLLARtoRMB的值是不能改变的。②用const关键字来定义符号常量格式:const数据类型常量名=常量值如:constintMAX=10;constintMIN=0;constdoubleDOLLARtoRMB=6.82652;功能与上例同。

常量与变量192.变量(1)变量定义格式 数据类型<变量名1[[=变量1初值],变量名2[=变量2初值],……]>;在定义时可以一次定义多个变量。其中:数据类型:可以是表3-4中的某种数据类型。

常量与变量20表3-4ANSIC基本数据类型定义注:编译器不同各别数据类型占用的字节数不一定相同。如:int型在Turboc2.0中占用2个字节16位,而在VisualC++6.0编译器下占用4个字节32位,与long类型相同;longdouble类型在Turboc2.0中占用10个字节80位,而在VisualC++6.0中占用8个字节64位。21(2)变量的初始化:

C程序中可以在定义变量时为变量赋初值,即变量的初始化。同时定义多个变量时,可以只把部分变量初始化,如:intx,y,z=5;floatf1,f2=1.0,f3; 如果同时定义多个同种类型的变量并赋同样的初值,可做如下处理:inta=b=c=5;floatf1=f2=f3=1.0;在C程序中变量的初始化是分两步完成的。如:inti=8;/*定义变量i并对其赋初值8*/相当于执行了如下两条语句:inti;/*声明变量i为整数类型*/i=8;/*为变量i赋值8*/

常量与变量22#include<stdio.h>main(){ inti=32767;shorts=32767; longl=2147483647; unsignedui=65535;unsignedshortus=65535; unsignedlongul=4294967295; charc='c';unsignedcharuc=99;floatf=0.23f; doubled=0.7E-3;longdoubleld=1.23456789E15; printf("整型变量i=%d",i); printf("\n短整型变量s=%d",s); printf("\n长整型变量l=%ld",l); printf("\n无符号整型变量ui=%d",ui); printf("\n无符号短整型变量us=%d",us); printf("\n无符号长整型变量ul=%ld",ul); printf("\n字符型变量c=%c",c); printf("\n无符号字符型变量uc=%c",uc); printf("\n单精度浮点型变量f=%f",f); printf("\n双精度浮点型变量d=%f",d);

printf("\n长双精度浮点型变量ld=%f\n",ld);}【例3.3】变量声明示例。23(3)变量类型的转换

①自动类型转换 自动类型转换需满足两个条件,第一两种类型彼此兼容,第二目标类型的取值范围大于源类型。C语言的数据类型的取值范围由小到大的依次为:char→short→int→long→float→double→longdouble如:inti=5;doublex=i;int型变量i自动转换为double型并赋值给x。charc=‘a’;intj=c;char型变量c自动转换为int型的97并赋值给j。

常量与变量24②强制类型转换 当两种类型彼此不兼容或目标类型取值范围小于源类型时,就无法进行自动转换了,这时需要进行强制转换。强制转换格式如下:(数据类型)<变量名>

常量与变量25【例3.4】强制转换示例。#include<stdio.h>voidmain(){charc; intb; floatf=128.6; b=(int)f;c=(char)f; printf("将float类型f强制转化为int类型b的结果为:%d\n",b); printf("将float类型f强制转化为char类型c的结果为:%d\n",c);}【例3.4】强制转换示例。263.3运算符及表达式赋值运算符与赋值表达式算术运算符与算术表达式自增与自减运算符关系运算符与关系表达式逻辑运算符与逻辑表达式条件运算符与条件表达式逗号运算符与逗号表达式长度运算符27运算符是表示某种操作的符号,在C语言中,除控制语句和输入输出函数外,其他所有基本操作都作为运算符处理。运算符的操作对象称为运算数,用运算符把运算数连接起来的一个有意义的式子就叫做表达式。这里主要介绍赋值运算符、算术运算符、关系运算符、条件运算符、逻辑运算符、逗号运算符和求字节数运算符及其相应表达式。其它运算符在后续章节中学习。3.3运算符及表达式28赋值运算符与赋值表达式1.赋值运算符与赋值表达式 赋值运算符是“=”,作用是将右边的表达式的值赋给左边的变量,同时赋值表达式的值为左边变量得到的值。如a=5是把数值5存储到变量a所指向的内存单元中,同时a=5这个表达式的值为5。 赋值运算符的结合方向是“从右至左”。如表达式a=b=3+5的计算过程为:先计算3+5的值为8赋给b,则b的值为8,又将b=3+5的值8赋给变量a。

C语言中赋值运算符的优先级仅高于逗号运算符,低于其它运算符。2.复合赋值运算符 在赋值运算符前加上其它运算符号构成复合运算符号。如:+=,-=,*=,/=。在C语言中规定可以使用10种复合运算符。即:

+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=

后5种是有符合位运算符,将在第9章介绍。29复合赋值的用法请参照如【例3.5】/*源文件名:Li3_5.c

功能:复合赋值测试*/#include<stdio.h>voidmain(){inta=2,b=3,c=5,x=6;printf("x*=a+b+c执行后x值为:%d\n",x*=a+b+c); printf("a*=c+=(b+=8)%5执行后a的值为:%d\n",a*=c+=(b+=8)%5); printf("执行完以上表达式后a=%d,b=%d,c=%d\n",a,b,c);}【例3.5】复合赋值示例。303.3.1赋值运算符与赋值表达式3.赋值表达式中的类型转换规则(1)将实型数据赋值给整型变量时,舍弃实数的小数点部分。如:inti=12345.6789;i的值为12345。(2)将整型数据赋值给实型变量时,数值不变,但以浮点数形式存储到变量中。如:floatf=765;将765转化为765.0000,再存储到变量f中。(3)将字符型数据赋给整型变量时,字符型占用1个字节即8位,将字符数据位放到整型变量的低8位中。整型变量的高位根据字符数据最高位是0或1相应的补0或1。31(4)将int、short、long型数据赋值给char型变量时,只将低8位放到char型变量中。如:inti=296;charc;c=i;

在VisualC++6.0中,int型数据占用4个字节,赋值情况如图3.1所示:

如:printf("c=%c",c);输出:c=Aprintf("c=%d",c);输出:c=65图3.13.3.1赋值运算符与赋值表达式323.3.2算术运算符与算术表达式1.算术运算符C语言的基本算术运算符有5种,分别是:+(两数相加或取正值运算,如:2+3、+5)-(两数相减或取负值运算,如:6-3、-2)*(两数相乘,如:2*3)/(两数相除,如:6/3值为2,7/3值为2,当分子分母都为整数时结果也为整数,小数部分舍去)%(模除运算符或称取余运算符,%两边的数须是整数如:9%5的值为4、6%2的值为0)2.算术表达式及运算符的优先级用算术运算符及括号将运算对象连接起来,组成一个符合C语言语法的式子,这样的式子就是算术表达式。运算对象可以是常量、变量、函数,如:123+‘a’*78%12-65、a+b%c*e+1.5/4都是合法的算术表达式。333.3.2算术运算符与算术表达式C语言中算术运算符的优先级由高到低依次为: 括号()→正、负(+、-)→乘、除、取余(*、/、%)→加、减(+、-)运算顺序: 确定符号后,先算乘除后算加减,有括号先算括号,对于同一级运算,则按从左到右的顺序进行。如: 算术表达式:(3+5)*6%17+7的计算方法为先算3+5为8,然后8*6为48,接着计算48%17为14,再计算14+7值为21。3.各种数值型数据的混合运算 在C语言中可以使用char、short、int、unsigned、long、float、double、longdouble这些类型的数据组成表达式进行混合运算,这就涉及到参与运算的各个操作数具体应转换成什么类型,及结果的类型。 在处理这样的表达式时,首先将参与混合运算的不同数据类型的数据转换成相同的数据类型再进行运算。34图3.2中向左的箭头表示一定会发生转换,如char型,short型在参与运算时首先转化成int型后再计算。向上的纵向箭头表示数据类型级别的高低,各种不同类型数据转换的方向。如int型与float型参与运算,把int型与float型转化为double型再运算,结果为double型。如:123.456789*32767/‘a’,首先把整型32767转化成double型进行运算,123.456789*32767结果为double型4045308.605163,再把‘a’转化为double型97.0再进行除法运算,4045308.605163/97.0结果为41704.212424。图3.23.3.2算术运算符与算术表达式353.3.3自增与自减运算符自增(++)运算符使变量增1,自减(--)运算符使变量减1。如:i++,++i,i--,--i类似i=i+1;i=i-1;但又不同。以自增为例:i++;是先取得i的值后再使i自增1,即表达式i++的值还是i的值。++i;是先使i自增1后再取得i的值,即表达式++i的值为i自增1后的值。i--与--i同样如此。如:inti=1;j=i++;/*使用变量之后i的值自增1变为2,此时j的值为1*/j=++i;/*使用变量之前i的值自增1变为2,此时j的值为2*/自增与自减运算符应注意以下几点:(1)自增与自减只能是对变量进行操作,不能对常量和表达式进行自增自减,如:8--、(x*y)++是错误的。(2)自增自减的结合方向是由“自右到左”,与算术表达式的结合顺序不同。(3)一个变量在一个表达式中出现两次或两次以上,不宜使用自增或自减运算。否则在不同的编译器下执行的顺序不同易出现结果不同的情况。363.3.4关系运算符与关系表达式关系运算实际上就是比较运算,是将两个值进行比较,判断比较的结果是否符合给定的条件,如满足表达式结果为“真”,不满足表达式结果为“假”。(1)关系运算符

<(小于)、>(大于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等)注意:关系表达式等于号“==”不同于“=”,后者是赋值运算符。 其中前四种关系运算符(<、>、>=、<=)的优先级相同,后两种关系运算符(==、!=)的优先级相同,且前四种的优先级高于后两种。关系运算符是双目运算符,相同的优先级的关系运算符结合方向是“从左至右”,在所有的运算符中关系运算符的优先级低于算术运算符高于赋值运算符。(2)关系表达式 用关系运算符将表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、逗号表达式和字符表达式等)连接起来的式子称关系表达式。关系表达式的结果为“真”或“假”,用“1”代表“真”,“0”代表“假”。37合法的关系表达式如:8>9、‘a’==97、56<89、1>(‘a’<‘b’)、‘a’<‘b’>0这5个关系表达式的值分别为:0、1、1、0、1又如:x=3,y=5,z=8,则: 关系表达式:x>

温馨提示

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

评论

0/150

提交评论