ch基本类型实用_第1页
ch基本类型实用_第2页
ch基本类型实用_第3页
ch基本类型实用_第4页
ch基本类型实用_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

会计学1ch基本类型实用基本类型C语言的基本(内置的)类型:整型(int),包括长整型、短整型和无符号整型浮点型,包括浮点型(float),双精度浮点型(double)和长双精度浮点型(long

double)字符型(char)布尔型(_Bool(C99))2第1页/共82页7.1整数类型C语言支持两种根本不同的数值类型:整型和浮点型。整型的值全都是数。浮点型的值则可能还有小数部分。整型又分为两类:有符号的和无符号的。3第2页/共82页有符号整数和无符号整数在有符号数中,如果数为正数或零,那么最左边的位(符号位)为0,如果是负数,符号位为1。最大的16位整数的二进制表示形式是0111111111111111,对应的值是32,767(215–1)。最大的32位整数是01111111111111111111111111111111,数值为2,147,483,647(231–1)。不带符号位的整数(最左边的位是数值的一部分)称为无符号整数。最大的16位无符号整数65,535(216–1)。最大的32位无符号整数是4,294,967,295(232–1)。4第3页/共82页有符号整数和无符号整数默认情况下,C语言中的整型变量都是有符号的,也就是说最左边保留为符号位。为了告诉编译器变量没有符号位,需要把它声明成unsigned类型。无符号数主要用于系统编程和低级的、与机器相关的应用。5第4页/共82页整型的细分int型通常有32位,但在一些老的CPU上可能是16位的。长整型比一般int型具有更多的位,短整型则具有更少的位。关键字(说明符)long、short以及signed、unsigned可以与int组合起来构造int类型。只有以下6种组合产生不同的类型: short

int unsigned

short

int int unsigned

int long

int unsigned

long

int关键字的顺序没有要求,单词int也可以省略(long

int可以缩写为long)。6第5页/共82页整型的取值范围6种整型的取值范围顺机器的不同而不同。

然而,C标准要求short

int、int和long

int中的每一种类型都要覆盖一个确定的最小取值范围。其次,int类型不能比short

int类型短,而long

int不能比int类型短。7第6页/共82页整型的取值范围16位机器上整型通常的取值范围:

类型

最小值最大值 short

int –32,768 32,767 unsigned

short

int 0 65,535 int –32,768 32,767 unsigned

int 0 65,535 long

int –2,147,483,648 2,147,483,647 unsigned

long

int 0

4,294,967,2958第7页/共82页整型的取值范围32位机器上整型通常的取值范围:

类型

最小值最大值 short

int –32,768 32,767 unsigned

short

int 0 65,535 int –2,147,483,648 2,147,483,647 unsigned

int 0 4,294,967,295 long

int –2,147,483,648 2,147,483,647 unsigned

long

int 0

4,294,967,2959第8页/共82页整型的取值范围64位机器上整型通常的取值范围:

类型

最小值最大值 short

int –32,768 32,767 unsigned

short

int 0 65,535 int –2,147,483,648 2,147,483,647 unsigned

int 0 4,294,967,295 long

int –263 263–1 unsigned

long

int 0

264–1标准库头文件

<limits.h>

可以找到定义了每种整数最大值和最小值的宏。10第9页/共82页C99中的整型C99提供了两种附加的标准整型:long

long

int

和unsigned

long

long

int.这两种long

long类型都要求至少64位。long

long

int

的取值范围通常是–263(–9,223,372,036,854,775,808)到263–1(9,223,372,036,854,775,807).unsigned

long

long

int的取值范围通常是

0到264–1(18,446,744,073,709,551,615).11第10页/共82页整型常量常量是在程序中以文本形式出现的数。C语言允许用十进制、八进制和十六进形式书写整型常量。12第11页/共82页八进制和十六进制数八进制数是用0~7的数字编写的。每一位表示一个8次幂。八进制数237表示成十进制数为:

2×82+3×81+7×80=128+24+7=159。十六进制数是用0~9的数字加上A~F的字母编写的,其中字母A~F分别10~15的数。十六进制数1AF的十进制数值是1×162+10×161+15×160=256+160+15=431。13第12页/共82页整型常量十进制常量包含数字0~9,但是一定不能以零开头: 1525532767八进制常量只包含数字0~7,而且必须要以零开头: 0170377077777十六进制常量包含数字0~9和字母a~f,而且总是以0x开头: 0xf0xff0x7fff十六进制常量中的字母即可以使大写字母也可以是小写字母:

0xff0xfF0xFf0xFF0Xff0XfF0XFf0XFF14第13页/共82页整型常量十进制常量的类型通常是int。

如果常量太大,达到超出long

int的范围,编译器会将其作为unsigned

long

int

来处理。对于八进制或十六进制常量,规则存在轻微的不同:编译器将遍历int,unsigned

int,long

int和

unsigned

long

int

类型,直到找到适合的表示常量的类型。15第14页/共82页整型常量为了强制内置编译器把常量作为长整型数来处理,只需在后边加上一个字母L(或l): 15L0377L0x7fffL为了指明是无符号常量,可以在常量后边加上字母U(或u): 15U0377U0x7fffU为了表示常量是长且无符号的可以组合使用字母L和U: 0xffffffffUL

字母L和U的顺序和大小写都没有关系。16第15页/共82页整型溢出当对整型执行算术运算,其结果有可能超出整型的表示范围。

例如,当两个整型数进行算术运算,其结果必须表示为整型。

如果运算结果不能表示为整型,那么此时就发生了溢出。17第16页/共82页整型溢出整型溢出发生时的表现跟操作数是有符号的还是符号的有关:有符号整数运算发生的溢出,程序的行为是没有定义的(不确定的)。无符号整数运算发生溢出时,运算的结果是有定义(确定的),即为正确结果模除2n的结果,其中n是存储运算结果的位数。18第17页/共82页读/写整数读和写无符号/短和长整型整数需要一些新的转换说明符。当读写无符号整数时,使用字母u、o或x代替转换说明中的d。 unsignedintu;

scanf("%u",&u);/*readsuinbase10*/ printf("%u",u);/*writesuinbase10*/ scanf("%o",&u);/*readsuinbase8*/ printf("%o",u);/*writesuinbase8*/ scanf("%x",&u);/*readsuinbase16*/ printf("%x",u);/*writesuinbase16*/19第18页/共82页读/写整数当读写短整型数时,在d、o、u或x前面加上字母h: shorts;

scanf("%hd",&s); printf("%hd",s);当读写长整型数时,在d、o、u或x前面加上字母l。当读写长长整型数时,在d、o、u或x前面加上字母ll(C99标准)。20第19页/共82页程序:数列求和(改进版)程序sum.c对用户输入的整数数列求和。这个程序的一个问题就是所求出的和(或其中某个输入数)可能会超出int型变量允许的最大值。如果程序运行在用16位长度表示整数的机器上,可能会发生这类情况: Thisprogramsumsaseriesofintegers. Enterintegers(0toterminate):1000020000300000 Thesumis:-5536当溢出发生在有符号整数上,输出结果是没有意义的。这个可以通过将变量改换成longint型进行改进。21第20页/共82页sum2.c

/*Sumsaseriesofnumbers(usinglongvariables)*/

#include<stdio.h>

intmain(void){longn,sum=0;

printf("Thisprogramsumsaseriesofintegers.\n");printf("Enterintegers(0toterminate):");

scanf("%ld",&n);while(n!=0){sum+=n;scanf("%ld",&n);}printf("Thesumis:%ld\n",sum);

return0;}22第21页/共82页7.2浮点类型C语言提供了三种浮点型,它们对应不同的浮点格式:float

:单精度浮点数double:双精度浮点数扩展双精度浮点数23第22页/共82页7.2浮点类型float适合精度要求不严格的浮点数。

double类型为大部分的程序提供了足够的精度。

long

double

很少用到。C标准没有说明float、double和longdouble类型提供的精度到底是多少,因为不同的计算机可以用不同的方法存储浮点数。

大多数现代计算机和工作站都遵循IEEE标准的规范754。24第23页/共82页IEEE浮点标准IEEE标准754由IEEE开发。主要提供了两种主要的浮点数格式:单精度(32位)和双精度(64位)。

数值以科学计数法的形式存储,每一个数都是由符号、指数和小数三部分构成。单精度格式中,指数长度为8位,而小数部分占了23位。表示的最大值大约是3.40×1038,其中精度是6个十进制数字。25第24页/共82页浮点类型取值范围根据IEEE标准实现浮点型的特征:类型

最小正值

最大值精度 float

1.17549

10–38

3.40282

1038 6digits double

2.22507

10–308

1.79769

10308 15digits不遵循IEEE标准的计算机上,该表无效。事实上,在一些机器上,float可以有和double相同的数值集合,或double可以有和long

double相同的数值。

26第25页/共82页浮点类型头文件可以在<float.h>中找到定义浮点型特征的宏。27第26页/共82页浮点常量浮点常量可以有多种书写方式。

57.0的有效写法如下: 57.057.57.0e057E05.7e15.7e+1 .57e2570.e-1浮点常量必须包含小数点或指数;指数是10的幂,指明数的大小。

如果有指数,必须在指数数值前放置字母E(或e)。可选项+或-可以出现在字母E(或e)的后边。28第27页/共82页浮点常量默认情况下,浮点常量都以双精度数的形式存储。为了表明只需要单精度,可以在常量的末尾处加上字母F(或f)(如57.0F)。为了表明必须以longdouble格式存储,可以再常量的末尾处加上字母L(或l)(如57.0L)。29第28页/共82页读/写浮点数转换说明符%e、%f和%g用于读写单精度浮点数。当读取double类型的数值时,在e、f或g前放置字母l: doubled;

scanf("%lf",&d);

注意:只能在scanf函数格式串中使用l,不能在printf函数格式串中使用。在printf函数格式串中,转换符e、f和g可以用来写(即显示)float型或double型值。

当读写longdouble类型的值时,在e、f或g前放置字母L(大写)。30第29页/共82页7.3字符类型除了整型和浮点型外,char是唯一还没有讨论的基本类型,即字符型。

char类型的值可以根据计算机的不同而不同,因为不同的机器可能会有不同的字符集。31第30页/共82页字符集当今最常用的字符集是ASCII(美国信息交换标准码),它用7位代码表示128个字符。ASCII常被扩展为8位代码用于表示256个字符代码,被称为Latin-1,提供一些西欧和许多非洲语言所需的字符。32第31页/共82页字符集char类型的变量能被赋值为任何单个字符: charch;

ch='a';/*lower-casea*/ ch='A';/*upper-caseA*/ ch='0';/*zero*/ ch='';/*space*/注意,字符常量需要用单引号括起来,而不是双引号。33第32页/共82页字符操作在C语言中字符的操作非常简单,因为存在这样一个事实:C语言会按小整数的方式处理字符。在ASCII码中,字符的取值范围是0000000~1111111,这个范围可以看成是0~127的整数。

字符

‘a’

的值为97,‘A‘的值为65,’0’

的值为48,and‘’的值为32。

字符常量实际上是int类型,而不是char类型。34第33页/共82页字符操作当计算中出现字符时,C语言只是使用它对应的整数值。考虑下面的例子,假设采用ASCII码字符集: charch; inti;

i='a';/*iisnow97*/ ch=65;/*chisnow'A'*/ ch=ch+1;/*chisnow'B'*/ ch++;/*chisnow'C'*/35第34页/共82页字符操作字符可以像数那样进行比较。下面的if语句测试ch是否含有小写字母;如果有,那么它会把ch转化为相应的大写字母。 if('a'<=ch&&ch<='z') ch=ch-'a'+'A';诸如‘a’

<=

ch这样的比较使用的是字符所对应的整数值这些数值依据使用的字符集有所不同,所以程序使用<,<=,>,和

>=

来进行字符比较可能不易移植。36第35页/共82页字符操作字符拥有和数相同的属性,这一事实会带来一些好处。例如,for语句中的控制变量可以简单采用大写字母: for(ch='A';ch<='Z';ch++)…以数的方式处理字符的缺点:可能会导致编译器无法检查出来的错误。导致编写出诸如‘a’

*

‘b’

/

‘c’的无意义的表达式。

可能会妨碍程序的可移植性,因为程序可能会基于一些对字符集的假设。37第36页/共82页有符号和无符号字符char类型类似整型,存在有符号和无符号两种。有符号字符通常的取值范围是–128~127,无符号型字符的取值范围则是0~255。一些编译器按有符号型处理字符,而另外一些编译器则将它们处理成无符号型数据。大多数时候,没有太大关系。C语言允许使用单词signed和unsigned来修饰char类型: signedcharsch; unsignedcharuch;38第37页/共82页转义序列字符常量通常是用单引号括起来的字符。然而,一些特殊符号是无法采用上述这种书写方式的,比如换行符,因为它们是不可见的(无法打印的),或者无法从键盘输入的。

转义序列提供了一种呈现这类特殊符号的方法。转义序列共有两种:字符转义序列和数字转义序列。39第38页/共82页转义序列字符转义序列:

名称

转义序列 Alert(bell) \a Backspace \b Formfeed \f Newline \n Carriagereturn \r Horizontaltab \t Verticaltab \v Backslash \\

Questionmark \? Singlequote \' Doublequote \"40第39页/共82页转义序列字符转义序列使用起来很方便,但是没有包含所有无法打印的ASCII字符。也无法用于表示基本的128个ASCII码字符以外的字符。数字转义序列可以表示任何字符,所以它可以解决上述问题。对特殊字符,数字转义序列使用这些字符的八进制或十六进制值。例如,ASCII码转义字符(十进制值为27)对应的八进制值为33,对应的十六进制值为1B。41第40页/共82页转义序列八进制转义序列由字符\和跟随其后的一个最多含有三位数字的八进制数组成,如

\33或

\033.十六进制转义序列由\x和跟随其后的一个十六进制数组成,如\x1b

或\x1B.其中x必须小写,不过十六进制的数字不限大小写。42第41页/共82页转义序列作为字符常量使用时,转义序列必须用一对单引号括起来。例如,一个表示成转义字符的常量可以写成‘\33’(或

'\x1b').转义序列可能有点隐晦,所以采用#define的方式给它们命名通常会是不错的主意: #defineESC'\33'转义序列也可以嵌入在字符串中使用。43第42页/共82页字符处理函数大小写转换函数:调用C语言的toupper库函数是快捷、更易于移植的把小写字母转换成大写字母的方法: ch=toupper(ch);toupper函数返回参数的大写形式.程序调用toupper函数需要在顶部放置下面这条#include指令: #include<ctype.h>C函数库提供了其他有用的字符处理函数。44第43页/共82页读/写字符转换说明符%c允许scanf和printf函数对单独一个字符进行读/写操作: charch;

scanf("%c",&ch);/*readsonecharacter*/ printf("%c",ch);/*writesonecharacter*/scanf函数不会跳过空白字符。为了强制scanf函数在读入字符前跳过空白字符,需要在格式串转换说明%c前面加上一个空格: scanf("%c",&ch);45第44页/共82页读/写字符因为通常情况下scanf函数不会跳过空白,所以它很容易检查到输入行的结尾:检查刚读入的字符是否为换行符。下面的循环将读入并且忽略掉所有当前输入行中其余的字符: do{ scanf("%c",&ch); }while(ch!='\n');当下次调用scanf函数时,将读入下一输入行中的第一个字符。46第45页/共82页读/写字符对单个字符的输入和输出,可以使用gechar函数和putchar函数来代替调用scanf函数和printf函数。putchar函数写单独一个字符: putchar(ch);每次调用gechar函数将读并返回一个字符: ch=getchar();getchar函数返回一个整数值而不是字符值。和scanf函数一样,gechar函数也不会再读取时跳过空白字符。47第46页/共82页读/写字符使用gechar和puchar函数代替scanf和printf函数可以节约执行时间。这两个函数比scanf和printf函数简单,因为scanf和printf函数是设计来读写多种不同格式的类型数据的。为了额外的速度提升,通常getchar函数和putchar函数是作为宏来实现的。getchar函数还有另一个优点,因为返回的是读入的字符,所以getchar函数可以应用在多种不同的C语言惯用法中。

48第47页/共82页读/写字符思考下面这个scanf函数循环,它用来跳过输入行的剩余部分: do{ scanf("%c",&ch); }while(ch!='\n');用getchar函数重写上述循环: do{ ch=getchar(); }while(ch!='\n');49第48页/共82页读/写字符为了精简循环,运行把gechar函数的调用放入到循环的控制表达式中: while((ch=getchar())!='\n') ;甚至变量ch都可以不需要,直接把getchar函数的返回值与换行符进行比较: while(getchar()!='\n') ;50第49页/共82页读/写字符getchar函数在用于循环中搜寻字符时和跳过字符一样有效。利用getchar函数跳过无限数量的空格字符: while((ch=getchar())=='') ;当循环终止时,变量ch将包含getchar函数遇到的第一个非空字符。51第50页/共82页读/写字符当混用getchar函数和scanf函数时要小心。scanf函数有一种留下后边字符的趋势,即对于输入后面的字符(包括换行符)只是看一下,并没有读入。 printf("Enteraninteger:"); scanf("%d",&i); printf("Enteracommand:"); command=getchar();

在读入i的同时,scanf函数调用将会留下后面没有消耗掉的任意字符,包括换行符(但不仅限于换行符)。getchar函数随后将取回第一个剩余字符。52第51页/共82页程序:确定消息的长度程序length.c显示用户输入消息的长度: Enteramessage:Brevityisthesoulofwit. Yourmessagewas27character(s)long.消息的长度包括空格和标点符号,但是不包含消息结尾处的换行符。我们即可以采用scanf函数也可以采用getchar函数读取字符,但大多数C程序员愿意采用getchar函数。length2.c

是更短的程序去掉了用于存储getchar函数读入字符的变量。53第52页/共82页length.c

/*Determinesthelengthofamessage*/

#include<stdio.h>

intmain(void){charch;intlen=0;

printf("Enteramessage:");ch=getchar();while(ch!='\n'){len++;ch=getchar();}printf("Yourmessagewas%dcharacter(s)long.\n",len);

return0;}54第53页/共82页length2.c

/*Determinesthelengthofamessage*/

#include<stdio.h>

intmain(void){intlen=0;

printf("Enteramessage:");while(getchar()!='\n')len++;printf("Yourmessagewas%dcharacter(s)long.\n",len);

return0;}55第54页/共82页7.4sizeof运算符确定存储指定类型值所需空间的大小。 sizeof(type-name)

值是无符号整数,表示存储属于类型名的值所需要的字节数。sizeof(char)

始终为1,但是对其他类型计算出的值可能会有所不同。在大多数32位机器上,表达式sizeof(int)的值为4。56第55页/共82页7.4sizeof运算符sizeof运算符也可以应用常量、变量和表达式。

如果i和j是整型变量,那么sizeof(i)在32位机器上是4,和表达式sizeof(i

+

j)的值一样。

与应用于类型时相反,当应用于表达式时sizeof不要求圆括号。可以用sizeof

i

代替sizeof(i)。

由于运算符优先级的问题,圆括号可能还是会需要的。编译器会把sizeof

i

+

j解释为(sizeof

i)

+

j,因为sizeof作为一元运算符的优先级高于二元运算符+。57第56页/共82页7.4sizeof运算符显示sizeof的值时要注意,因为sizeof表达式的类型是由实现定义的。58第57页/共82页7.5类型转换为了让计算机执行算术运算,通常要求操作数具有相同大小(即具有相同的位数),并且要求存储的方式也相同。当不同类型的操作数混合在同一表达式中时,C编译器可能需要生成一些指令将某些操作数转化成不同类型,使得硬件可以对表达式进行计算。如果对16位int型数和32位longint型数进行加法操作,编译器将把16位int型操作数转化成32位如果int型数和float型数相加,编译器会将int型数转换为float格式。59第58页/共82页7.5类型转换因为编译器可以自动处理这些转换而无需程序员介入,所以这类转换称为隐式转换。C语言还允许程序员通过使用强制运算符执行显示转换。执行隐式转换的规则有些复杂,因为C语言有大量不同的基本数据类型。60第59页/共82页7.5类型转换当发生下列情况时会进行隐式转换:当算术表达式或逻辑表达式中操作数的类型不相同时。(C语言执行所谓的常用算术转换)当赋值运算符右侧表达式的类型和左侧变量的类型不匹配时。当函数调用中使用的参数类型于其对应的参数的类型不匹配时。当return语句中表达式的类型和函数返回值的类型不匹配时。第9章将对后边两种情况进行介绍。61第60页/共82页常用算术转换常用算术转换多用于二元运算符的操作数上。如果变量x是float型的,变量i是int型的,常用算术转换将会应用在表达式x+

i。显然把变量i转换成float型(匹配变量x的类型)比把变量x转换成int型(匹配变量i的类型)更安全。当一个整数被转换成float类型,可能会发生的最糟糕的事是精度会有少量的损失。相反,把浮点数转化成int类型,将有小数部分的损失;更糟糕的是,如果原始数大于最大可能的整数或者小于最小的整数,那么将会得到一个完全没有意义的结果。62第61页/共82页常用算术转换常用算术转换的策略是把操作数转换成可以安全的适用于两个数值的“最狭小的”数据类型。为了统一操作数的类型,通常可以将相对较狭小类型的操作数转换成另一个操作数的类型来实现(即所谓的提升)。最常用的提升是整型提升,它把字符或短整型转换成int类型(或者某些情况下是unsignedint类型)。执行常用的算术转换的规则时可以划分成两种情况:任一操作数的类型是浮点型的情况。两个操作数的类型都不是浮点型的情况。63第62页/共82页常用算术转换任一操作数的类型是浮点数的情况。如果一个操作数的类型为long

double,那么把另一个操作数的类型转换成long

double类型。

否则,如果一个操作数的类型为double类型,那么把另一个操作数转换成double类型。否则,如果一个操作数的类型是float,那么把另一个操作数转换成float例如:如果一个操作数的类型是longint类型,并且另一个操作数的类型是double类型,那么把longint类型的操作数转换成double类型。64第63页/共82页常用算术转换两个操作数都不是浮点数的情况。按照下图对类型狭小的操作数的类型进行提升:unsigned

long

intlong

intunsigned

intint65第64页/共82页常用算术转换当把有符号操作数和无符号操作数整合时,会通过把符号位看成数的位的方法,将有符号数被转换成无符号数。这条规则可能会导致某些隐蔽的编程错误。最好尽量避免使用无符号整数,特别是不要把它和有符号整数混合使用。66第65页/共82页常用算术转换常用算术转换的示例: charc; shortints; inti; unsignedintu; longintl; unsignedlongintul; floatf; doubled; longdoubleld;

i=i+c;/*cisconvertedtoint*/ i=i+s;/*sisconvertedtoint*/ u=u+i;/*iisconvertedtounsignedint*/ l=l+u;/*uisconvertedtolongint*/ ul=ul+l;/*lisconvertedtounsignedlongint*/ f=f+ul;/*ulisconvertedtofloat*/ d=d+f;/*fisconvertedtodouble*/ ld=ld+d;/*disconvertedtolongdouble*/67第66页/共82页赋值中的转换常用算术转换不适用于赋值运算。赋值运算使用代替法,即赋值运算右边的表达式结果转换成左边变量的类型: charc; inti; floatf; doubled;

i=c;/*cisconvertedtoint*/ f=i;/*iisconvertedtofloat*/ d=f;/*fisconvertedtodouble*/68第67页/共82页赋值中的转换把浮点数赋值给整型变量会去掉该数的小数部分。 inti;

i=842.97;/*iisnow842*/ i=-842.97;/*iisnow-842*/如果取值在变量类型范围之外,那么把值赋给一个较狭小类型的变量将会得到无意义的结果(甚至更糟): c=10000;/***WRONG***/ i=1.0e20;/***WRONG***/ f=1.0e100;/***WRONG***/69第68页/共82页赋值中的转换如果将一个浮点常量赋值给一个浮点变量,最好在该浮点常量后附加一个后缀f: f=3.14159f;如果没有后缀,浮点常量3.14159将为double类型,可能会引起警告信息。70第69页/共82页强制类型转换虽然C语言的隐式转换使用起来非常方便,但是有些时候会需要更大程度的控制类型转换。

基于这种原因,C语言提供了强制类型转换。强制类型转换表达式格式如下: (类型名)表达式

类型名表示的是表达式应该转换成的类型。71第70页/共82页强制类型转换使用强制类型转换表达式计算机float型值小数部分的方法: floatf,frac_part;

frac_part=f-(int)f;f和(int)f的不同就是在f的小数部分在强制类型转换时被丢失了。强制类型转换表达式可以被用来显示哪些肯定会发生的类型转换: i=(int)f;/*fisconvertedtoint*/72第71页/共82页强制类型转换强制类型转换也可以用来控制编译器,强制其进行执行转换。例子: floatquotient; intdividend,divisor; quotient=dividend/divisor;

为了避免在除法运算产生截断小数部分,我们需要强制转换其中一个操作数: quotient=(float)dividend/divisor;强制转换变量dividend为float会迫使编译器把divisor也转换成float类型。73第72页/共82页强制类型转换C语

温馨提示

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

评论

0/150

提交评论