第二讲 C语言基础Word文档下载推荐.docx

上传人:b****7 文档编号:22933064 上传时间:2023-02-06 格式:DOCX 页数:39 大小:584.67KB
下载 相关 举报
第二讲 C语言基础Word文档下载推荐.docx_第1页
第1页 / 共39页
第二讲 C语言基础Word文档下载推荐.docx_第2页
第2页 / 共39页
第二讲 C语言基础Word文档下载推荐.docx_第3页
第3页 / 共39页
第二讲 C语言基础Word文档下载推荐.docx_第4页
第4页 / 共39页
第二讲 C语言基础Word文档下载推荐.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

第二讲 C语言基础Word文档下载推荐.docx

《第二讲 C语言基础Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第二讲 C语言基础Word文档下载推荐.docx(39页珍藏版)》请在冰豆网上搜索。

第二讲 C语言基础Word文档下载推荐.docx

0X+数字部分

以0X或0x为前缀,由0123456789abcdefABCDEF组成,没有小数部分

◇整数可以加后缀:

uU——无符号后缀

lL——长整数后缀

几个long整数常量的格式如下:

/*长十进制常量*/10L、79L

/*长八进制常量*/012L0115L

/*长十六进制常量*/0xaL、0X4fL

/*无符号长十进制常量*/776745UL、778866LU

2.实型常量——浮点数的表示方法

一个“浮点数常量”是一个表示带符号实数的十进制数。

十进制小数形式:

定点数

指数形式:

包括一个整数部分、一个小数部分和一个指数。

整数部分+小数部分+指数部分

指数部分以E或e开头,紧跟一整数,表示E前面的数值乘以10的多少次幂。

15.75

1.575E1/*=15.75*/

1575e-2/*=15.75*/

-2.5e-3/*=-0.0025*/

25E-4/*=0.0025*/

实型常数分类:

单精度(float)4字节

双精度(double)8字节

长精度(longdouble)8字节

◇在VC下,不区分双精确度和长精确度数。

3.字符常量

⑴普通字符常量

字符常量——是由可表示字符集中单个字符由单引号(′′)括起来构成的。

例2.1查看字符的ASCII码值,并用字符参加算术运算。

%c:

%d\n"

'

a'

);

A'

%d\n"

+'

程序运行输出:

a:

97

A:

65

162

转义字符常量

格式:

\ascii字符

这里"

\"

表示转义,取消字符的原有含义,其后面的字符与”\”一起被处理成一个字符,在内存中占用一个字节。

转义序列表示

\a响铃(警告)

\b退格符(backspace键)

\f换页

\n换行

\r回车

\t水平制表(tab键)

\v垂直制表

\′单引号

双引号

\\反向斜杠

\?

文字问号

\0空字符

\nnn八进制表示的ASCII字符

(注:

nnn为三位八进制数=一字符的ascii码值)

\xhh十六进制表示的ASCII字符

hh为二位十六进制数=一字符的ascii码值)

例1:

查看转义字符的ASCII码值。

%s:

%0x\n"

"

\\n"

\n'

\\t"

\t'

\\r"

\r'

%c:

%d\n"

\x41'

\x42'

例2大小写字母转换。

从上面的例可知,大小写字母的ASCII码值相差32,即:

大写字母的ASCII码值=小写字母的ASCII码值-32

小写字母的ASCII码值=大写字母的ASCII码值+32

%c\n"

+32);

b'

-32);

a

b:

B

4.符号常量(文字常量)

符号常量——用标识符来表示一个常量,该常量称为符号常量,在C中用预处理命令#define来定义,如:

#definePI3.14159265

符号常量的使用。

#definepi3.141592625

doublex;

x=3*pi;

%f\n"

x);

5.字符串常量

字符串常量——是用双引号(“”)括起来的字符序列。

字符串常量用于表示以空字符’\0’(ascii码值=0的字符)结尾的字符串的字符序列。

注意:

”a”和’a’代表不同的含义。

”a”和’a’所占用的字节数。

a"

sizeof("

));

sizeof((char)'

2

1

字符常量的加、减运算。

iostream.h>

%d\n"

m'

p'

+1);

//printf("

m"

+"

p"

//错

2.3变量及其类型

2.3.1什么是变量

变量

变量具有三个基本要素:

变量名、数据类型、值。

1.变量的名字

变量名是变量所分配的存储单元的符号地址。

C规定标识符只能同字母、数字和下划线组成,且第一个字符必须是字母或下划线。

例如:

sum、average、total、month、Student_name

变量不能使用系统的关键字(保留字)

2.定义变量

在C中变量必须先定义后使用。

定义格式:

类型变量名[=初值];

类型变量名表;

inta,b,c;

doublex,y,z;

intsize=100;

floata,b,c,d,e;

intn=3,m=5,k=7;

charc1=‘a’,c2=‘b’,c3=‘c’;

定义的关键是说明变量的类型。

变量存储的数据类型规定该变量在内存中分配的字节数。

3.为变量赋初值

变量的值有两种,一种是存放的数据值,另一种是在内存中所分配的存储单元的地址。

intc;

c=7;

c);

sizeof(c));

%0x\n"

&

c);

运行结果:

7//数据值

4//占用的字节数

12ff7c//分配存储单元的地址值

4.整数在内存中的存储情况

⑴int(基本整型)

在VC下,占用4个字节,最高位为符号位

最高为0,该数为正数,以后各位是该数的值

最高为1,该数为负数,以后各位是该数的补码值

⑵shortint(短整型)

在VC下,占用2个字节,最高位为符号位

+7:

0000000000000111

-7:

1111111111111001

⑶longint(长整型)

⑷无符号型

没有符号位,所有各位均为数值位

例2.1

shortintx=-1;

unsignedshorty=x;

%d,%d,%u\n"

x,(short)y,y);

-1,-1,65535

不同类型的变量都有其存储数的范围,超过范围,输出的结果是错的。

shortintx=32767;

x=x+2;

x=-32767

若用两个字节的二进制数书写程序中的加法运算:

0111111111111111

+0000000000000010

1000000000000001

两正数相加,得一负数,即-111111111111111的补码,运算溢出。

⑸字符型

在VC下,占用一个字节,存储字符的ASCII码,是0-255的整型数

5.指向基本数据类型的变量的指针变量

◆一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占4个字节,字符量占1个字节等。

◆根据一个内存单元的编号即可准确地找到该内存单元。

内存单元的编号也叫做地址。

◆内存单元的编号或地址址称为指针,这样变量的地址也称为该变量的指针。

⑴变量与指针

◆变量的指针就是变量的地址。

◆在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。

◆一个指针变量的值就是某个变量的地址或称为某变量的指针。

⑵定义指针变量

对指针变量的定义包括三个内容:

①指针类型说明,即定义变量为一个指针变量;

②指针变量名;

③变量值(指针)所指向的变量的数据类型。

其一般形式为:

数据类型符*变量名;

int*p1;

再如:

int*p2;

//p2是指向整型变量的指针变量

float*p3;

//p3是指向浮点变量的指针变量

char*p4;

//p4是指向字符变量的指针变量

C中指针类型的变量占用4个字节的存储空间,这与指针所指向的数据类型无关,因为存储的都是变量地址类型的数据。

intmain()

%d,%d,%d\n"

sizeof(int*),sizeof(double*),sizeof(char*));

return0;

4,4,4

指针变量的初始化要用变量的地址:

inti=200;

int*pi=&

i;

⑶引用指针变量

两个有关的运算符:

1) 

&

:

取地址运算符。

2) 

*:

指针运算符(或称“间接访问”运算符)。

C语言中提供了地址运算符&

来提取变量的地址。

形式为:

&

变量名;

a表示变量a的地址

b表示变量b的地址。

变量本身必须预先说明。

指针变量的赋值

指针变量名=&

变量名;

(1)指针变量初始化的方法

inta;

int*p=&

a;

(2)赋值语句的方法

int*p;

p=&

通过指针变量访问所指向的变量

*指针变量名

可以通过指针变量ip间接访问变量i,例如:

x=*ip;

改变指针变量的地址值。

设:

inti,j,*p1,*p2;

i='

;

j='

p1=&

i;

p2=&

j;

如执行赋值操作:

p2=p1;

如果执行操作:

*p2=*p1;

//等价于执行”j=i;

◆指针变量可出现在表达式中。

intx,y,*px=&

x;

指针变量px指向整数x,则*px可出现在x能出现的任何地方。

例如:

y=*px+5;

//表示把x的内容加5并赋给y

y=++*px;

//++*px相当于++(*px)

y=*px++;

//*相当于y=*px;

px++

2.4运算符和表达式

2.4.1C运算符简介

⑴算术运算符

用于各类数值运算。

包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。

⑵关系运算符

用于比较运算。

包括大于(>

)、小于(<

)、等于(==)、大于等于(>

=)、小于等于(<

=)和不等于(!

=)六种。

⑶逻辑运算符

用于逻辑运算。

包括与(&

)、或(||)、非(!

)三种。

⑷位操作运算符

参与运算的量,按二进制位进行运算。

包括位与(&

)、位或(|)、位非(~)、位异或(^)、左移(<

<

)、右移(>

>

)六种。

⑸赋值运算符

用于赋值运算,分为:

简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&

=,|=,^=,>

=,<

=)三类共十一种。

⑹条件运算符

这是一个三目运算符,用于条件求值(?

)。

⑺逗号运算符

用于把若干表达式组合成一个表达式(,)。

⑻指针运算符

用于取内容(*)和取地址(&

)二种运算。

⑼求字节数运算符

用于计算数据类型所占的字节数(sizeof)。

⑽强制类型转换运算符

用于数据类型的转换((类型))。

⑾成员运行符——分量运算符

用于对象引用其成员(.)。

⑿指向成员运算符——分量运算符

用于通过指向对象的指针访问对象中的成员(->

⒀下标运算符

用于通过索引号引用数组中的元素([])。

⒁函数调用算符——圆括号运算符

用于说明该标识符为函数并提供参数表(())。

%d%d%d\n"

20%7,-20%7,20%-7);

6-66

输出都是余数。

2.4.4各类数值型数据之间的混合运算

变量的数据类型是可以转换的。

转换的方法有两种,一种是自动转换,一种是强制转换。

1.自动转换遵循以下规则

1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

2)转换按数据长度(占用的字节数)增加的方向进行,以保证精度不降低。

3)值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。

如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。

下图表示了类型自动转换的规则。

floatPI=3.14159f,ss;

ints,r=5;

ss=r*r*PI;

s=r*r*PI;

s=%d\n"

s);

ss=%f\n"

ss);

s=78

ss=78.539749

2.强制类型转换

(数据类型)表达式

功能:

返回指数据类型的表达式值

inti=100,j=40;

floatf,ff;

f=i/j;

ff=(float)i/j;

//强制转换

f=%f\n"

f);

ff=%f\n"

ff);

f=2.000000

ff=2.500000

2.4.5自增和自减运算符

自增1运算符记为“++”,其功能是使变量的值自增1。

自减1运算符记为“--”,其功能是使变量值自减1。

自增1,自减1运算符均为单目运算,都具有右结合性。

可有以下几种形式:

++ii自增1后再参与其它运算。

--ii自减1后再参与其它运算。

i++i参与运算后,i的值再自增1。

i--i参与运算后,i的值再自减1。

++和--运算只能用于变量,而不能用于常量和表达式。

如5++和(a+b)++都是不合法的。

⑵++和--运算的结合方向是“自右至左”,即按右结合进行运算。

inti=3;

inta=-i++;

a=%di=%i\n"

a,i);

a=-3i=4

结果说明:

程序先执行“a=-i”,后执行”i++”,而不是”(-i)++”,不能对表达式(-i)进行++运算。

inti=8;

%d"

++i);

i);

--i);

i++);

i--);

-i++);

-i--);

inti=5,j=5,p,q;

p=(i++)+(i++)+(i++);

q=(++j)+(++j)+(++j);

%d%d%d%d\n"

p,q,i,j);

2.4.6赋值运算符与赋值表达式

1.赋值运算符

一个赋值运算把右边操作数的值赋给左边操作数命名的存储位置。

因此,一个赋值运算的左边操作数必须是可修改的L(左值)。

a=3;

a=a+2;

◇L(左)值和R(右)值表达式的概念

L值——指的是存储器位置的表达式称为“L值”表达式。

R值——用于描述一个表达式的值,

所有的L值都是R值,但R值不都是L值。

i=7;

//正确变量名i是一个L值

7=i;

//错误常量7是一个R值

j*4=7;

//错误表达式j*4产生一个R值

constintci=7;

//说明一个const变量(只读变量)

ci=9//错,ci是不可修改的l值

((i<

3)?

i:

j)=7;

//错,条件运算返回的是变量的值

2.赋值过程中的类型转换

赋值转换:

当左值类型与右值类型不一致时,系统强制把右值转换为左值的类型,并在赋值发生后把该值存储在左边操作数中。

inti=5.75;

i=%d\n"

i=5

floatf=5;

doubleff=5;

单步运行可观察到两浮点变量存储的值:

doubled=123.456789e100;

f=d;

//溢出,f没有能存储正确的值

单步运行:

intc='

c=%d\n"

c=97

inti=0x7fffff4a;

shorts=0x7f4a;

longl=0x7fffff4a;

charc1=i;

charc2=s;

charc3=l;

单步运行程序:

例:

将有符号数据传送给无符号变量。

shortb=-1;

unsignedshorta=b;

%d%0x\n"

a,a);

b,b);

65535ffff//高位的0没有显示

-1ffffffff//按int型显示

3.复合的赋值运算

复合赋值运算符组合简单赋值运算符和其它双目运算符。

expression1+=expression2

可以理解为

expression1=expression1+expression2

一个复合赋值运算符的操作数必须是整数或浮点类型。

复合赋值运算符:

*=乘法赋值

/=除法赋值

%=余数赋值

+=加法赋值

-=减法赋值

=左位移赋值

=右位移赋值

=按位与(AND)赋值

^=按位异或(XOR)赋值

|+按位或(OR)赋值

main()

inta=5;

intb=5;

a*=2;

b+=5;

%d%d\n"

a,b);

a^=b;

return1;

1010

010

4.赋值表达式

赋值运算符构成的“变量名=表达式”结构是一个表达式,称为赋值表达式,其“运算”结果为向左边的变量所赋的值。

inta=0;

a,a=b);

55

在printf函数的表达式表中,计算顺序是自右至左。

⑴赋值运算是“自右而左”的结合顺序,即在程序中可以连续用一个数据对多个变量赋值:

”a=b=c=5;

”,等价于”a=(b=(c=5));

”:

a=b=c=5;

a,b,c);

a=(b=(c=10));

555

101010

⑵赋值表达式可以包含复合赋值运算符。

inta=5,b=5;

a+=a-=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1