c-2数据类型、运算符和表达式_第1页
c-2数据类型、运算符和表达式_第2页
c-2数据类型、运算符和表达式_第3页
c-2数据类型、运算符和表达式_第4页
c-2数据类型、运算符和表达式_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第三章数据类型、运算符、表达式对数据的操作——运算运算符和表达式整型字符型实型(浮点型)单精度型双精度型数组类型结构体类型共用体类型构造类型基本类型指针类型空类型数据类型§3C语言程序的基本元素有七种:①标识符②关键字③空白字符④注释⑤分隔符⑥常量⑦运算符一.标识符标识符的概念用来标记文件名、常量、变量、函数名等有效字符序列标识符的使用规则由英文字母、数字(0~9)或下划线'_'组成的字符序列,

且必须由英文字母或'_'开头,大小写敏感。不与关键字标识符相同,故又称合法标识符标识符的长度无统一规定1标识符的习惯用法常量用大写变量用小写常用取简专用取繁顾名思义例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$1232023/2/6三.空白字符即程序中标识符与标识符之间,行与行之间的空白间隔的字符作用:程序文本格式的编辑,提高可读性空白字符在编译时不产生代码四.注释(/*...*/或者//……)辅助程序编辑过程中的记忆、阅读和理解使用的位置:与“空白字符”相同,可多行注释不产生编译代码不允许嵌套所谓关键字:即已由系统内部使用,不能重作其它定义C关键字共有32个2二.关键字例如:

/*Thisisaexample/*fortest*/*/非法五.分隔符有八种,在C编译程序中有其固定含义3C语言的基本元素(①标识符②关键字③空白字符④注释⑤分隔符⑥常量⑦运算符)常量和变量基本数据类型及其定义不同类型数据间的转换运算符和表达式§3.1常量和变量一、常量定义:常量是在程序运行过程中,其值不能被改变的量。分类:直接常量:从其字面形式即可判断的常量。

12(整型)、3.5(实型)、‘a’(字符型)符号常量:利用一个有效标识符来代表一个常量(基本上用大写)。:PI#definePI3.14例1:(直接常量)#include<stdio.h>voidmain(){intr;floatl,s;r=10;l=2*3.14*r;s=3.14*r*r;printf(“l=%f\n”,l);printf(“s=%f\n”,s);}求圆的周长和面积。l=2*3.14159*r;s=3.14159*r*r;例2:(符号常量)#include<stdio.h>#definePI3.14voidmain(){intr;floatl,s;r=10;l=2*PI*r;s=PI*r*r;printf(“l=%f\n”,l);printf(“s=%f\n”,s);}#definePI3.14159

符号常量的优点:①符号常量的实际值易于修改。②符号常量的意义比较明确。例intx=3;chara,b,c;floatpi=3.1415;/*定义pi并初始化*/

floatscore;变量的定义类型变量名表;二、变量(存储常量的容器)变量的概念变量:在程序执行过程中,其值可以改变的量变量名:在内存中占有一个存储单元,并对应一个地址3变量名x(地址)变量(值)变量的取值范围存储空间大小(字节数)合法标识符定义的同时可以赋初值52.变量的定义和使用C使用变量的原则:“先定义,再使用”#include<stdio.h>voidmain(){intx,y;x=3;y=x*x;printf(“%d”,y);}一个变量只定义一次,定义变量一般在程序的开头,不能定义在程序的中间或后面。§3.2基本数据类型及其定义基本数据类型(整型实型字符型)八进制整数:无符号,0~7组成,最高位用0引导,如010,0123

十六进制整数:无符号,0~9及a~f或A~F组成,最高位用0x或0X

引导,如0x1a,0X1A

一.整型类型——整型常量十进制整数:带符号,0~9组成,第一位数字为非零(除零外),如10,1232.整型类型——整型变量P45类型符号关

字(小写)取

围字节数整

型带[signed]int-231~231-14B*[signed]short[int]-32768~327672B[signed]long[int]-231~231-14B不带unsigned[int]0~232-14B*unsignedshort[int]0~655352Bunsignedlong[int]0~232-14B注意点:1.整型变量的分类2.整型变量在内存中所占的字节数及其取值范围3.整型变量的溢出问题4.整型变量输入输出的格式控制字符用%d和%u3.

整型数据的输入输出printf

(格式控制字符串,输出参数1,...,输出参数n);scanf(格式控制字符串,输入参数1,...,输入参数n);格式控制说明

%…

十进制八进制十六进制int%d%o%xlong%ld%lo%lxunsigned%u%o%xunsignedlong%lu%lo%lx例3(1)输出整型数据#include<stdio.h>voidmain(){inta=10;unsignedb=8;longc=100;printf("%d,%o,%x\n",a,10,10);printf("%d,%u,%ld\n",a,b,c);printf("%d,%x\n",012,012);}10,12,a10,8,10010,aprintf("%d,%#o,%#x\n",10,10,10);10,012,0xa格式控制字符普通字符注意事项:输入时,格式控制字符个数与输出参数应遵循个数一致、顺序一致和类型一致。inta;unsignedb;longc;scanf(“__________________”,&a,&b,&c);printf(“__________________”,a,b,c);%d%u%ld%d%u%lda=%d,b=%u,c=%ld例3(2)输入整型数据两部分不能同时缺省b.指数形式(指数)[整数部分][.尾数部分][E|e[+|-]

指数部分]二.实型数据——实型常量a.十进制形式:由0~9数字及小数点组成(小数)9如:

e3

2.1e3.5

.e3

e指数部分为整数错误!!2.实型数据——实型变量float型:字长32位(4个字节)

double型:字长64位(8个字节)

longdouble型:字长128位(16个字节)存放包含小数位的值分单精度(float)和双精度(double)两种float型的有效位数达到7位double型的有效位数达到16位3.实型数据的输入和输出输入scanf()float:%f或%e以小数或指数形式输入一个单精度浮点数double:%lf或%le以小数或指数形式输入一个双精度浮点数输出printf()float和double使用相同的格式控制说明%f以小数形式输出浮点数,保留6位小数(float有效数字7位,double有效数字16位)%e以指数形式输出例1:#include<stdio.h>voidmain(){floata;

doubleb;

a=1234.111111;

b=1234.111111;

printf(“a=%f,b=%f”,a,b);}输出结果:a=1234.111***,b=1234.111111例2.实型数据输出示例#include<stdio.h>voidmain() {doubled=3.1415926;printf("%f,%e\n",d,d);printf("%5.3f,%5.2f,%.2f\n",d,d,d);

}

3.141593,3.141593e+000一共5位,小数3位,小数点占一位3.142,3.14,3.14复习1、请选出可用作C语言用户标识符的一组标识符____________。A).void

define

WORD

B).a3_b3_789IFC).For-gifCASED).3dUNDOsizeof2、voidmain(){inti=010,j=10,k=0x10;printf("%d,%d,%d\n",i,j,k);}输出结果是

。A).8,10,16B).8,10,10C).10,10,10D).10,10,163、指出下面正确的输入语句是__________。A).scanf("a=b=%d",&a,&b)B).scanf("a=%d,b=%f",&m,&f)C).scanf("%3d",c)D).scanf("%5.2f”,&f)

转义字符:在单引号中,用反斜线引导的字符或数字来表示其他含义的字符常量三.字符型数据——字符常量普通字符:用单引号括起来的可表示的单个字符如:‘T’,‘7’,‘!’,

’(空格也是一个字符)9<转义字符含义\n\v\r\a\‘\ddd\t\b\f\\\“\xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符inta=3;printf(“\“%dd\”\n”,a);三.字符型数据——字符变量(一)字符型变量用来存放一个字符常量。实际在内存中存放的是该字符的ASCII码值。

(二)字符变量的定义形式

charc1,c2;(三)字符的长度:1个字节,取值范围在0—255,输入输出用%c

(四)在一定范围内可直接参与整数变量的运算voidmain(){inti;charc;i=97;c=‘a’;printf(“i=%c,c=%c\n”,i,c);printf(“i=%d,c=%d”,i,c);}例1:输出结果:i=a,c=ai=97,c=97

字符型数据和整型数据(0~255)之间可以通用。例2:字符数据的算术运算。

void

main()

{charch1=‘a’,ch2=‘B’;

ch1=ch1-32;ch2=ch2+32;

printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

}Ch1=A,ch2=b

/*实现字母大小写的转换*/例3:字符数据输入。

void

main()

{charch1,ch2;

scanf(“%c%c”,&ch1,&ch2);

printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

}Ab↙Ch1=A,ch2=b

调用getchar和putchar输入输出一个字符字符输出函数putchar输出一个字符putchar(输出参数);字符常量或字符变量charch=‘a’;putchar(ch);putchar(‘?’);a?putchar(‘\n’);字符输入函数getchar输入一个字符charch1,ch2;ch1=getchar();ch2=getchar();功能:从键盘输入一个字符,空格,回车键等都将作为字符读入,且只有按enter键(回车键)时输入结束四.字符串常量用“”括起来的零个或多个字符(含转义字符)组成的字符序列

如:

"ascii","7y677","8757gj\n"

b.字符串的长度:指字符串中字符的个数。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为“

”(一对紧连的双引号)。例如,“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其长度分别为14和13(空格也是一个字符)。c.字符串的存储C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个‘\0’作为字符串的结束标志。注意:在源程序中书写字符串常量时,不必加结束字符‘\0’,否则画蛇添足。如果有一个字符串为“china”,则它在内存中的实际存储如下所示:

china\0思考:‘a’和“a”相同吗?

‘7’和7相同吗?charc1=‘a’;charc2=“a”;(错误)变量赋值的方法方法一:定义变量的同时赋值方法二:先定义变量,再用scanf赋值inta=4,b;scanf(“%d”,&b);3.3不同类型数据间的转换类型转换的概念在程序运行中,一种数据的类型改变成另一种数据类型类型转换两种方式隐式转换——自动类型转换显式转换——强制类型转换隐式转换发生在下列三种情况混合运算(算术转换)赋值运算数据输入输出10

精度损失问题:无精度损失问题,但赋值运算中视情况而定一.算术转换(隐式转换)当不同类型数据混合运算时,自动进行的转换转换原则

精度损失问题:较高类型向较低类型转换时可能发生二.强制类型转换(显式转换)人为进行的类型转换使用格式

(类型名)表达式基本类型或指针类型常量、变量及其表达式11无条件的转换(垂直)按类型的高低“向高看齐”显式转换(强制转换)一般形式:(类型名)(表达式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变低高intunsignedunsignedlongdouble

char(short)unsignedshortlong

float3)结合性:即指运算符与运算元的结合方向用于指导同级的运算左结合性——op自左向右右结合性——op自右向左表达式:运算元E与运算符的组合式§3.4运算符与表达式12一.运算符简介运算符(op)

:用于对运算元E

进行规定的操作。共有34种运算符,可分十大类(参见本课件第一章)运算符的三个属性1)运算元数E:C最少1个,最多3个2)优先级:共十五个(可简化为八或十个)简化后的优先级:1一级运算符2单变量运算符3算术运算符4移位运算符5关系运算符6位逻辑运算符7逻辑运算符8条件运算符9赋值运算符10逗号运算符高低均为双元运算,左结合五种运算*乘法

/除法%求模+加法-减法优先级(4)二.算术运算优先级(3)

说明a/b式中,a、b均为整数时,若不能整除,其商向零取整a%b式中,a、b均为整数+、-用于符号运算时,为单元运算、优先级(2)、右结合性13括号“()”之内表达式优先级最高例:

-a-b+c

运算元(操作数E)必须是变量,不能用于常量和表达式。

例如,5++、--(a+b)等都是非法的。

三.自加自减运算用于对变量(假设为i)的自身加1减1运算——自反运算运算符、表达式及其属性后置式:在多个运算符表达式中,总是:先使用(i)一次,再做自加(减)运算14自加自减运算应用示例voidmain(){intx=6,y;printf("x=%d\n",x);/*输出x的初值*/y=++x; /*前置运算*/printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*后置运算*/printf("y=x--:x=%d,y=%d\n",x,y);}y=x++;y=--x;X=6y=++x:x=7,y=7y=x--:x=6,y=7四.赋值运算分为简单赋值和复合赋值两种双元运算、优先级(14)、右结合赋值运算的一般形式

简单赋值

E1=E2

复合赋值

E1op=E2

E1=(E1opE2)E1

E2的值

E1为变量,E2为常量、变量或表达式

E1、E2类型不同时,将发生类型转换,结果为E1类型运行时,可以连续赋值给多个变量,但不能用于初始化例:inta=b=c=2;×

具有表达式使用功能

op运算符共有十种(算术和位运算),要求掌握下列五种:①*=

②/=③%=

④+=⑤-=15例2.1赋值运算举例voidmain(){inta=3,b=2,c;b*=a+4*3%5;

printf("b=%d\n",b);a=8;a*=b=c=3;

printf("\na=%db=%d\n",a,b);a=5+(c+=3);

printf("a=%dc=%d\n",a,c);}/*b=b*(a+4*3%5)*//*b=10*//*c3,bc,ab*a*//*a=24b=3*//*赋值运算的表达式

温馨提示

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

评论

0/150

提交评论