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

下载本文档

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

文档简介

1、第3章 基本数据类型和表达式张书源本章将详细介绍C语言程序中使用的基本语法基本语法单位单位、数据类型数据类型、运算符运算符和表达式表达式。附 数的表示方法十进制数:由09的数字组成,逢十进一。如:45、-6、0.019、-14.336二进制数:由0和1组成,逢二进一。如:1011、11、1101 0001 0100十进制0123456789二进制01101110010111011110001001二进制转十进制:(110)2=1*22+1*21+0*20=(6)10(1011)2=1*23+0*22+1*21+1*20=(11)10八进制数:由07组成,逢八进一。如:65、725、-34十进制

2、0123456789八进制012345671011八进制转十进制:(65)8=6*81+5*80=(53)10(725)8=7*82+2*81+5*80=(469)10十六进制数:由09、AF组成,逢十六进一。如:3A、4d6f、-D340十进制0123456789十六进制0123456789十进制10111213141516十六进制ABCDEF10十六进制转十进制:(3A)16=3*161+10*160=(58)10(4d6f)16=4*163+13*162+6*161+15*160=(19823)10C语言中的数支持十进制、八进制和十六进制。书写时:八进制数以0开头,十六进制数以0 x开头

3、。如:34(十进制)034(八进制)0 x34(十六进制)在计算机内部,所有数都是以二进制方式存在的。八进制和十六进制都与二进制有简单对应关系:每位八进制数对应三位二进制数,每位十六进制数对应四位二进制数。如:(34)8=(011 100)2(34)16=(0011 0100)2(10 1111 0111)2=(1367)8=(2f7)16通常,八进制数和十六进制数都可看做是二进制数的简化写法。3.1 基本语法单位基本符号:C语言程序中只能使用以下符号:1、数字:092、字母:大小写英文字母3、符号:+ - * / % & = _ ( ) , . ? ! # 等注:注释文字和字符串中的

4、文字不受此限制。关键字(保留字):C语言中已经有了固定语法含义的名字称为关键字。关键字不能再作为其它用途使用。语句名都是关键字。如if、else、while、for、return等。类型名都是关键字。如int、double、void等。注:由于C语言区分大小写,所以for是关键字,而For、FOR则不是。标识符:标识符用于给变量、常量、函数、文件等命名。标识符的命名规则:1、由字母、数组、下划线组成,且只能以字母或下划线开头。2、标识符中的字母区分大小写。3、不能与关键字同名。特定字:特定字是标识符不是关键字,但它们在C语言中已经有了较固定的用法,应避免当做一般标识符使用。如:include、

5、define等用于编译预处理。练习:以下哪些符号是合法的标识符?a3 3a x$ _b5 if IF main 3.2 数据类型C数据类型基本类型构造类型指针类型空类型void定义类型typedef字符类型char枚举类型enum整 型实型单精度型float双精度型double数组结构体struct共用体union短整型short长整型long整型int3.3 基本数据类型基本数据类型包括整型、实型和字符型。3.3.1 整型int:整型。short:短整型。long:长整型。unsigned int:无符号整型。unsigned short:无符号短整型。unsigned long:无符号长整

6、型。各种整型的区别在于数的取值范围不同。整型常量:写法含义实例普通写法int型125、-125加后缀l或Llong型125L、-125L加后缀u或U无符号型125U 是 unsigned int型125UL 是 unsigned long型加前缀0八进制数0125的值相当于十进制数85加前缀0 x十六进制数 0 x125的值相当于十进制数293整型变量:类型名 变量1,变量2,;int x,y,max;unsigned int i,j;long k;unsigned long m,n;以上变量都是整型变量,但它们允许存放的数值范围不同。3.3.2 实型float:单精度实型。double:双精

7、度实型。float型提供7位有效数字,double型提供1516位有效数字。实型常量:1、普通写法:默认为double型。如7.5、-1.228。2、加后缀f或F:单精度型。如7.5f类型是float。3、科学计数法:尾数 e或E 指数如:1.5e-3 表示 1.510-30.02E6 表示 0.02106注:指数必须为整数。实型不支持无符号型,也不支持八进制和十六进制写法。实型变量:类型名 变量1,变量2,;double x,y;float z;x=-11.26;y=7e3;z=5E-4;3.3.3 字符型char:字符型。unsigned char:无符号字符型。在计算机中,所有文字和符号

8、也都是由数字表示的。我们把表示文字的数值称为编码。C语言中,字符型的长度为8位二进制数,最多只能表示256个字符。其中值为0127的数值表示的是ASCII码表中的字符。字符常量:1、可打印字符:如 a、7、;。说明:字符常量只能是单个字符,值为ASCII码值,不能是汉字。2、转义字符:包括不可打印字符和一些有特定功能的字符。t 制表符,相当于Tab键形成的跳格。n 换行符,相当于回车键。 单引号。 双引号。 反斜杠。 0 空字符,它的值为0。说明:一个转义字符只相当于一个字符。字符型变量:类型名 变量1,变量2,;char c1,c2;unsigned char x;c1=#;c2=7;x=n

9、;3.3.4 字符串字符串是由文字组成的文本串。C语言没有提供字符串类型,但支持在程序中使用字符串。字符串中可包含英文、中文、日文等任意文字,它们的值取决于系统使用的编码。通常英文字母和符号使用长度为8位的ASCII码,汉字使用长度为16位的GBK或GB2312码。字符串中可包含转义字符。字符串常量:用双引号引起的文本串。Hello World!你好,北京!苹果t桔子t香蕉nC:Windows说明:t、n、都是转义字符,它们只相当于一个字符。字符串变量:C语言用0结尾的字符数组作为字符串变量。char s15=a,b,c,d,0; /s的值为abcdchar s2=abcd;说明:C语言在处理

10、字符串常量时会自动在末尾加上0字符。练习:1 和 1.0 有什么区别?1是int型,1.0是double型。1 和 1 有什么区别?1是int型,它的值是1。1是char型,它的值是49。1 和 1 有什么区别?1是char型,它是单个字符。1是字符串,它由1和0两个字符组成。3.3.5 变量定义及初始化C语言规定:1、所有变量必须先定义再使用。2、变量在没有设置值前,它的值是不确定的。3、变量的类型在程序执行过程中不能发生改变。4、当赋给变量的值超出了它的取值范围,其值会被截断。变量定义:变量通常在函数开始处定义,定义时可以设置初值(初始化),也可以不设置初值。int a,b=10,c=1;

11、char c1=K;double x=7.5,y;变量名必须是标识符,同一个函数中变量不能重名。3.4 表达式和运算符C语言提供了丰富的运算符,可构建多种形式的表达式。表达式由操作数和运算符组成,每个表达式可产生一个确定的值。3.4.1 算数运算1、算数运算符:*乘整数或实数2*3 1.5*3.8/除整数或实数2/3 1.5/3.8%模整数6%2 6%4+加整数或实数75+88 13.6+5-减整数或实数13-6 7.1-2.3-取负 整数或实数-5 -8.3+增1整型变量x+ +x-减1整型变量x- -x说明:1、整数的运算结果还是整数,实数的运算结果是实数,整数和实数的运算结果是实数。运算

12、结果2*5102*2.55.0 (不是5)5/22 (不是2.5)5/2.02.5注意:模运算只能用于整数,不能用于实数。2、优先级:*、/、%的优先级高于+、-。运算结果1+2*511(1+2)*5155%2*223、在表达式中,只能用圆括号改变运算的优先顺序。如:算式:)()(2)3(510bayxbax写成C表达式:(10*x+5*(3*a+b)/(2*(x+y)*(a-b)注:C语言中运算符不能省略,如10 x必须写成10*x。4、自加运算和自减运算:+:增1,对变量的值加1。-:减1,对变量的值减1。如:x+ 等价于 x=x+1x- 等价于 x=x-1说明:(1) 自加和自减只能作用

13、于单个整型变量。如:(x+y)+ 是没有意义的。(2) 自加和自减有前缀用法和后缀用法。int x=2;x+; /相当于x = x+1int x=2;+x; /相当于x = x+1单独使用时,前缀用法和后缀用法效果是相同的。(3) 前缀方式是“先增值后引用”,后缀方式是“先引用后增值”。int x=2, y;y = +x;x先增1,再赋值给y。所以x为3,y为3。int x=2, y;y = x+;先把x赋值给y,再对x增1。所以x为3,y为2。建议:尽量不要使用容易误解的用法。int x=2, y;y = +x;int x=2, y;+x;y = x;int x=2, y;y = x+;in

14、t x=2, y;y = x;x+;推荐推荐int i=2, n;n = +i*2;int i=2, n;n = i+*2;+i是先增值,后引用。所以,运算后:i值为3,n值为6。i+是先引用,后增值。所以,运算后:i值为3,n值为4。(4) “+”和“-”运算的优先级高于乘法和除法。2、常用数学函数:C语言的数学函数在头文件math.h中声明。绝对值函数:int abs(int i) 求整数的绝对值double fabs(double x) 求实数的绝对值abs(-3)3fabs(-3)3.0fabs(-0.5*3)1.5平方根函数:double sqrt(double x) 求平方根,x不

15、能为负sqrt(2)sqrt(a+b)2ba指数函数和对数函数:double pow(double x, double y) 求x的y次方double exp(double x) 求e的x次方double log(double x) 求x的自然对数double log10(double x) 求x的以10为底的对数pow(3, 4)exp(3.5)log(10)log10(10)4310loge10ln10log1010lg5 . 3e三角函数:double sin(double x) 求x正弦值double cos(double x) 求x的余弦值double tan(double x) 求

16、x的正切值以上函数中的x均为弧度。sin(30*3.14/180)cos(60*3.14/180)30sin()60cos(练习把下面的算式写成C表达式。(abs(a)+1)*(abs(b)+1) 11baaacbb242(-b+sqrt(b*b-4*a*c)/(2*a)例题写一个C程序,输入圆的半径,计算并输出圆的周长和面积。算法:输入半径r计算圆的周长c=2r计算圆的面积s=r2输出c和s。#include #define PI 3.1415926int main() double r,c,s; scanf(%f,&r); c=2*PI*r; s=PI*r*r; printf(周长

17、为%fn,c); printf(面积为%fn,s); return 0;3.4.2 赋值运算1、赋值运算符:在C语言中,赋值是一种运算,用于改变变量的值。“=”称为赋值运算符,它组成的表达式称为赋值表达式。赋值表达式格式:变量名 = 表达式这个运算的值是赋值后变量的值。实例1:int n; /*声明了一个整型变量n*/n = 1; /*n赋值为1*/n = 1; 是一个表达式语句。实例2:int n = 1;n = 2.5;n是整型变量,赋值时会把小数截去,n的值为2。实例3:double x;x = 2.5;x的值是2.5。实例4:int a = 1, b = 2;a = a+b;a的值是3

18、。实例5:int a, b, c;a = b = c = 10;赋值是一种运算,具有“自右向左”的结合性。先计算表达式 c = 10,c赋值为10,表达式值为10。再计算表达式 b = 表达式值,b赋值为10,表达式值为10。再计算表达式 a = 表达式值,a赋值为10,表达式值为10。执行结果为a、b、c的值都是10。练习:int a, b, c=1;a = 5;b = 2+(c=a);结果:a 的值是5;b 的值是7;c 的值是5。2、自反赋值运算符:自反赋值是某些赋值的简化形式。*=乘赋值 x *= yx = x*y/=除赋值 x /= yx = x/y%=模赋值 x %= yx = x

19、%y+=加赋值 x += yx = x+y-=减赋值 x -= yx = x-y说明:赋值运算符(含自反赋值运算符)的优先级低于算术运算符,所以应先计算y+2,再进行自反赋值运算。int a=1, b=2;a += b; /* 相当于a=a+b,执行后a为3 */int x=2, y=3;x *= y+2; /* 相当于x=x*(y+2),执行后x为10 */说明:赋值和自反赋值运算符都是右结合的。计算过程为:a-=2*2; /a=a-2*2,值为-3,此时a值也变为-3a+=-3; /a=a+(-3),值为-6int a=1;a += a -= 2*2;3.4.3 关系运算1、关系运算符:大

20、于()大于等于()=小于()小于等于()3 的值为15=3 的值为02=b+c2、a%b=c3、acb4、a=a1000说明:由于实数在运算时存在有效数字的问题,应尽量避免对实数表达式做“相等”或“不等”的判断。如:1.0/3*3=1.0在数学上两边是相等的,但在计算机中计算后两边的值不相等。3.4.4 逻辑运算1、逻辑运算符:逻辑与&逻辑或|逻辑非!当一个判断存在多个条件时,需要用逻辑运算对条件进行组合。逻辑与:当条件均为真时,结果为真,有任一个条件为假,结果就是假。如:53 & 7=3 & 73 | 78 的值为158 的值为0F | F0(F)F | T1(T)T

21、 | F1(T)T | T1(T)F为假,T为真。逻辑非:真的非是假,假的非是真。如:!(53) 的值为0!(7=8) 的值为1!F1(T)!T0(F)F为假,T为真。命题1:x是1到100间的整数。x=1 & x=1 & x=100)x100或者命题3:x是小写英文字母。x=a & x=a & x=A & x、=、=关系双目=、!=关系双目&逻辑双目|逻辑双目=、+=、-=、*=、/=、%=赋值2、在进行&运算时,当左端的运算结果为“假”时,结果就是0,不再计算另一端。在进行|运算时,当左端的运算结果为“真”时,结果就是1,不再计算另一

22、端。如:int a=2, x;计算表达式:a0 & (x=3)表达式值为1,x=3执行,x值为3。练习:命题1:a小于b或a小于c。ab | ac & bc命题3:a和b其中之一小于c。ac | b0)命题5:a是奇数。a%2=1命题6:a不能被b整除。a%b!=03.4.5 逗号运算符逗号表达式:表达式1,表达式2,表达式3这种用逗号连接起来的表达式称为逗号表达式。从语法上,它相当于一个表达式,它的值是最后一个表达式的值。如:1+2, 5*3 的值为15说明:逗号运算符的优先级是最低的。如:x=1+2, 5*3 的效果是x值为3,逗号表达式的值为15x=(1+2,5*3) 的效果是x值为153.4.6 条件运算符条件表达式:表达式1?表达式2:表达式3?:是条件运算符,它是C语言中

温馨提示

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

评论

0/150

提交评论