C语言-第2章C语言基础_第1页
C语言-第2章C语言基础_第2页
C语言-第2章C语言基础_第3页
C语言-第2章C语言基础_第4页
C语言-第2章C语言基础_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第2章C语言基础

2.1数据类型

2.2标识符、常量和变量2.3基本类型数据2.4运算符及表达式本章小结及作业巩固练习2.1数据类型

存取数据必须先确定数据的编码方式、存储格式和所占的存储长度,C语言中把这三者结合起来,给出几种固定的形式,这些形式就是最基本的数据类型。为什么要设置数据类型?

在计算机中使用一定长度的存储单元(通常是字节的倍数)来存储数据。长度决定了数据取值范围的大小。存储的编码方式有:原码、反码、补码、ASCII码。。。存储的存储格式有:定点型、浮点型。。。数据类型基本类型(简单)

构造类型

指针类型空类型

数组类型结构体类型共用体类型标准类型用户自定义类型:整型实型字符型单精度型双精度型枚举类型2.1数据类型back2.2标识符、常量与变量1、字符集C语言字符集由以下几部分组成:①字母:大、小写英文字母共52个。②数字:0~9共10个③空白符:空格符、制表符、换行符等统称为空白符。④标点和特殊字符:+-*/%_.=<>&|()[]{};?:’”!#等25个。

标识符是指用来标识变量名、符号常量名、函数名、文件名以及一些具有专门含义的有效字符序列。①以字母或下划线(_)开头,由字母、数字、下划线组成的字符序列。如:num,a8,no_13d,no1,xk#1②大写字母和小写字母视为两个不同的字符。③标识符的长度一般规定取前面8个字符,多余的不被识别。例如student_name和student_num被认为是相同的标识符student_。2、标识符

关键字标识符:预定义标识符:用户标识符:代表固定含义,不能另作它用。(P17表2.1)代表特定含义(一般是库函数名和预编译处理命令名),一般不另作它用。标识符分类定义用户标识符时注意:

大小写有区分。如book,BOOK,Book

。标识符做到“见名知意”。如average,sum,length等。关键字不能作为标识符。如do,int,if等。3、常量在程序运行过程中,其值不能被改变的量称为常量。符号常量:

#define符号常量名常量

如:#definesum10常量类型:算术型运算常量:123,3.1415926字符型常量:’a’,“hello”使用标识符#include"stdio.h"

main(){floatradius;/*radius:圆的半径*/

floatarea,length;/*area、length:面积和周长*/

scanf("%f",&radius);/*输入圆的半径*/

area=3.1415926*radius*radius;/*求圆的面积*/length=2*3.1415926*radius;/*计算圆的周长*/printf(“area=%f,length=%f",area,length);}#definePI3.1415926PIPI【例】计算圆的面积和周长。(1)变量名:既代表某存储空间,又代表该空间存储的数据。(3)变量的数据类型:决定了存储空间的大小。

C要求:变量必须先声明后使用,指明其数据类型变量定义格式:数据类型标识符变量名表如:inta,b,c;floatd;(4)变量的地址:即变量所占内存空间首字节的编号。

4、变量radius6(2)变量的值:存放在存储单元中的数据(存储单元内容)。

程序执行过程中,其值可以被改变的量#include"stdio.h"

main(){floatradius;floatarea,length;scanf("%f",&radius);area=3.1415926*radius*radius;length=2*3.1415926*radius;printf(“area=%f,length=%f",area,length);}#definePI3.1415926PIPI【例】计算圆的面积和周长。说明部分执行部分back整型数据类型标识符整型数据有基本型、短整型、长整型和无符号型四种。基本整型(简称整型):int短整型:shortint或short长整型:longint或long无符号型:表示不带符号的整数。又可分为以下三种:无符号整型:unsignedint无符号短整型:unsignedshort无符号长整型:unsigned1ong整型数据2.3基本类型数据类型名称占用的字节数数值范围int4-2147483648(-231)~2147483647(231-1)shortint2-32768(-215)~32767(215-1)longint4-2147483648(-231)~2147483647(231-1)unsignedint40~4294967295(232-1)unsignedshort20~65535(216-1)unsignedlong40~4294967295(232-1)表2.1各种整型数据所占内存字节数和取值范围原码=补码=反码原码原码除符号位其余位取反+1补码正整数:负整数:反码+1如:求-5的补码如何求整数的补码?整数在内存中的存储方式:补码例如:

intk;long

p,q;unsignedshortn,m;任何一种数据都有常量和变量两种形式2、整型变量的定义变量定义后,只是在内存中申请了相应的空间,此时存储空间中并没有有意义的数据,即变量没有确定的值。C语言中整型常量可以用3种形式表示:

①十进制数,如+123,-234,0,23;

②八进制数,如0234,0777;

③十六进制数,如0x234,0x9A。整型数又分为基本整型、短整型、长整型(后加l或L)

和无符号整型数(后加u或U)

。前缀、后缀可同时使用以表示不同类型不同进制的整型数。如03456LU表示八进制无符号长整型数。3、整型常量二.实型数据1.类型标识符单精度型:类型标识符为float

双精度型:类型标识符为double类型占用字节数有效数字数值范围float46-710-37-1038

double815-1610-307-10308

2.实型变量的定义floatf,f1;doubled;3.实型常量(又称实数,只有十进制形式)小数形式指数形式由数字和小数点组成(必有小数点,但其前后0可省)例如:0.246.2465.05.等。格式:整数部分.小数部分e指数部分

(e或E前必有数字,后必为整数)例如:135e312.12e-5.123e40e0

e23.5e1.5在程序中,实数可以用小数或指数形式表示,但在内存中,实数都以规范化的指数形式存放。#include"stdio.h"main(){floatx=123456789;doubley=123456789;printf("\nx=%f,y=%f",x,y);}程序运行的结果:x=123456792.000000,y=123456789.000000实型常量不区分float型和double型,可以赋给float型和double型变量,根据变量的类型截取常量中的有效位数字。【例】将一个有效数字位超过7位的数赋值给实型变量,然后输出实型变量的值。1.字符型数据类型标识符(char)

三.字符型数据

如:charx;

一个字符变量占一个字节,一个字符变量只能存放一个字符2.字符型变量的定义3.字符型常量用单引号括起来的字符。代表ASCII字符集中的一个字符两种表示形式:由单引号括起来的普通字符常量;如‘A’,’a’,‘3’,‘

由单引号括起来的转义字符;如‘\n’,‘\t’

单引号中的大小写字母代表不同的字符常量。如:’a’,’A’

’是一个字符常量,有一空格,和’’的区别。单引号中只能包含一个字符只能用‘’表示字符常量,“”表示的是字符串常量(1)普通字符常量

以一个反斜线开头后跟一个特定的字符,代表某一特定的ASCII字符。又称反斜线字符。如:’\n’,’\’’\后可跟8进制或16进制数,表示一个ASCII字符如:’A’也可用’\101’

‘\x41’表示。(2)转义字符常量#include"stdio.h"main(){printf("\n\t\101");printf("\n\t\b\b\b\b");printf("\\*hello*\\");printf("\n\t\x41");}输出结果:

A\*hello*\ A【例】使用转义字符控制输出。4.字符型数据在内存中的存储形式c2c10100000100001010图2.5字符型数据的存储charc1,c2;c1=’A’;c2=’\n’

一个字符型数据既可以以字符形式,也可以以整数形式输出【例2.3】字符型数据的输出。#include"stdio.h"main(){charc1;

c1=65;

printf(“%c,%d\n”,c1,c1);}字符型数据:0-255的整数输出结果:A,65可对字符数据进行的运算算术运算

‘B’-’A’等价于66-65等价于1‘a’+1等价于97+1等价于98等价于’b’大小写字母的相互转换:‘A’+32等价于65+32等价于97等价于’a’‘b’-32等价于98-32等价于66等价于’B’数字字符与相应整数值的相互转换:‘9’-’0’等价于57-48等价于99+’0‘等价于9+48等价于‘9’【例】#include"stdio.h"main(){charc1,c2;c1='A';c2='b';c1=c1+32; c2=c2-32;

printf("c1=%c,c2=%c",c1,c2);}四.字符串常量

用一对双引号括起来的一串字符;如“hello”,“%d%d”

字符串长度:为字符个数字符串存储:在内存中占的字节数=字符个数+1

C规定:自动在一个字符串的末尾加一个串结束标志’\0’

如:“hello”在内存中的存储形式是(该字符对应ASCII码值):1041011081081110

为了能直观理解,以后直接用字符本身表示。上例表示成:hello\01.空串“”和空格串“

”的区别

2.字符常量’b’与字符串常量”b”的区别形式上:定界符不同:单引号‘

’;双引号“”内存表示:都存储ASCII码,但’b’占1个字节,”b”占2个字节注意:C语言中没有字符串变量,字符串存放在字符数组中。注意变量赋初值是指在定义变量的同时对变量进行赋值。例如:

inta=5;

inta,b,c=10;

五.变量赋初值如果对几个变量赋以同一个初值,不能写成:

inta=b=c=8;而应写成:

inta=8,b=8,c=8;back

运算符:算术运算符、关系运算符、赋值运算符、逗号运算符等表达式:由运算对象(常量、变量、函数)、运算符和括号组成的、有意义的、符合C语言规定的式子。表达式的求值规则:先按运算符的“优先级”由高到底进行,若级别相同,则按运算符的“结合性”处理。2.4运算符和表达式结合性右结合性:自右至左的结合方向左结合性:自左至右的结合方向一、算术运算符和算术表达式1.算术运算符及优先级和结合性

双目:+(加法运算符) -(减法运算符) *(乘法运算符) /(除法运算符) %(模运算符或求余运算符)说明:1.除%外,双目运算对象可以是整型、实型。%运算对象只能是整型。2.操作数类型一致时运算结果与操作数类型一致。3.不一致时不能直接运算,数据类型需要转换整除:整/整=整(舍去所有小数部分≠四舍五入)

8/3=2实除:两实数或与一实数相除=双精度型。如:8/3.0=2.6666666整型%整型=整型如:8%3=2-19%4=-3

(在VC6.0中结果的符号与被除数相同) /(除法运算符)%(模运算符或求余运算符)

单目:

+(正值运算符)+3-(负值运算符)-3,-2.0注:1.运算符必须出现在运算对象的左边。

2.运算对象可以是整型、实型。2.算术运算符和圆括号的优先级:()+-*/%+-单目双目同级同级同级结合性:高低双目:从左到右单目:从右到左优先级a-b+c3.算术表达式:

算术运算符和括号将运算对象连接起来的、符合C语法规则的式子常量、变量、函数等2+sqrt(c)*b

求值规律:

1)括号可以嵌套多层,但左右括号必须配对。由内向外计算。

2)不同级别的运算符,按优先级由高到低运算同一级别运算符,按结合性运算

3)若一个运算符两侧数据类型不同,则先进行类型转换,然后计算。如:2

*3%5/4a*b/c-1.5(a,b,c为变量)inti=10;floatf=12.0,e=10.0;doubled=12.0;10+i*f-d/edoublefloatlongunsignedintchar,short高低为必定的转换当运算符两侧的运算对象的数据类型不一致时的转换方向。

注:

102.400103110.4004.基本类型数据间的混合运算5+‘b‘-x/2+y*mintm=2,floatx=1.2,doubley=4.00.600-+8.0001)自动类型转换功能:将表达式的值转换为指定类型。

如:(double)a(把a转换为double类型)(int)(x+y)(把x+y的值转换为整型,)(float)(5%3)(把5%3的值转换为float型)

注:1.(int)x+y(把x转换为整型,然后与y相加)2.表达式为变量时不加()。

3.强制类型转换或自动类型转换,只是得到了一个所需类型的中间变量,原变量或表达式的值和类型并不变。

4.强制类型转换的优先级高于自动类型转换。强制类型转换运算符2)强制类型转换

格式:(类型名)(表达式)#include<stdio.h>main(){inti=1,j=5,k1,k2,k3;floatx=5.7,y=2.8,z1,z2,z3;k1=(int)x;k2=(int)(x)/y;k3=(int)(x/y);z1=(float)i;z2=(float)i/j;z3=(float)(i/j);printf("k1=%d\n",k1);printf("k2=%d\n",k2);printf("k3=%d\n",k3);printf("z1=%f\n",z1);printf("z2=%f\n",z2);printf("z3=%f\n",z3);}【例2.6】强制类型转换示例1.

基本赋值运算符:=

如:a=10

复合赋值运算符:+=,-=,*=,/=等二、赋值运算符和赋值表达式格式:变量名赋值运算符表达式a=3a=a+1a+=5

a=b=c=12.赋值表达式:由赋值运算符组成的表达式a

10(1)赋值运算符的优先级只高于逗号运算符,右结合性。(2)右侧<表达式>也可以是一个赋值表达式。例1:下列程序段执行后,变量a的值?

inta,b,c;

a=5;

a=(b=5);

a=(b=5)+(c=3);(4)在程序中可给一个变量多次赋值,最后赋的值为其当前数据。(3)赋值过程:

求出表达式的值,比较表达式值的类型与变量的类型,类型相同时:直接赋值类型不同时:先自动类型转换再赋值。赋值表达式的值与类型与左边变量的值与类型相同

如:doublef;f=23;则f=23.00000000000000

b、整型实型:舍弃小数部分.如:inti;i=12.5则i=12(5)赋值运算中的类型转换

原则:自动把右侧表达式值按左边变量类型转换

a、实型整型:数值不变,以浮点数形式存储到变量中.3.复合赋值运算符任何双目运算符问:若i=2,j=12,k=10则k+=j+=i+8的值是?===》k=k+(j=j+(i+8))值是

32

在赋值符“=”之前加上其它运算符,构成复合运算符。

注:其它运算符放在“=”之前如:a+=3等价于a=a+3x*=y+8等价于x=x*(y+8)x%=3等价于x=x%3三、自增(++)、自减(--)运算符

如:inti=3,x;x=++i;x=i++;++和--使运算对象的值增1或减1。运算对象可为实型变量、整型变量。不能是常量或表达式如:++3,(i+j)--;等都不合法。是单目运算符。++i,--i,i++,i--都是合法的表达式。结合方向:“自右向左”。如:-i++相当于-(i++)++i,--i:前置运算符(i值先增/减1,后使用i)i++,i--:后置运算符(先使用i的值,后使i值增/减1)

相同点:变量都具有自增1或自减1的效果

不同点:表达式会有不同的值==>i=i+1=4;x=i=4;==>x=i=3;i=i+1=4;【例2.8】自增、自减运算符使用示例:#include"stdio.h"main(){inti=5,j,k;

j=++i;

i=5;

k=i++;

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

printf(“j=%d,k=%d\n”,++j,k++);}求下列算术表达式的值

2*3%5/4++a-c+b++(a=1,c=3,b=3)02a++-c+b++(a=3,b=-4,c=5)++a-c+(++b)(a=3,b=-4,c=5)-6-4逗号运算符:“,”优先级:最低结合性:从左到右逗号表达式:用逗号将表达式连接起来的式子格式:〈表达式1〉,〈表达式2〉,······,〈表达式N〉逗号表达式的值:从左到右,依次求出各表达式的值,

表达式N的值和类型为逗号表达式的值和类型。如:x=(a=3,b=5,c=b*4)t=3,t+2(a=2*3,a*5),a+6四、逗号运算符和逗号表达式五、sizeof运算符

sizeof运算符是一个单目运算符,它返回变量或数据类型的字节长度。一般形式为:

sizeof(类型标识符)

sizeof(变量名)

例如:

sizeof(double)

sizeof(int)

设有下列程序段:

floatf;

inti;

i=sizeof(f);

则变量i的值为4。back巩固练习(1)若变量a是int类型,并执行了语句:

a=‘A’+1.6;则正确叙述是______。

A)a的值是字符C

B)a的值是浮点型

C)不允许字符型和浮点型相加

D)a的值是字符'A'的ASCII值加上l√巩固练习(2)若以下选项中变量已正确定义,则正确的赋值语句是______。

A)x1=26.8%3;B)1+2=x2;

C)x3=0x12;D)x4=1+2=3;√(3)以下选项中不属于C语言的类型的是_____。

A)short

温馨提示

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

评论

0/150

提交评论