a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 89|回复: 0

[C++] 2012计算机二级考试c++辅导:C++与C语言的区别3

[复制链接]
发表于 2012-7-31 21:56:58 | 显示全部楼层 |阅读模式
三、强制类型转换4 h4 s& H- a; e& {- e/ ]5 W
  有时候,根据表达式的需要,某个数据需要被当成另外的数据类型来处理,这时,就需要强制编译器把变量或常数由声明时的类型转换成需要的类型。为此,就要使用强制类型转换说明,格式如下:
1 L# E6 ]: N+ \' K  int* iptr=(int*) &table;) V& i6 M& I. G# e
  表达式的前缀(int*)就是传统C风格的强制类型转换说明(typecast),又可称为强制转换说明(cast)。强制转换说明告诉编译器把表达式转换成指定的类型。有些情况下强制转换是禁用的,例如不能把一个结构类型转换成其他任何类型。数字类型和数字类型、指针和指针之间可以相互转换。当然,数字类型和指针类型也可以相互转换,但通常认为这样做是不安全而且也是没必要的。强制类型转换可以避免编译器的警告。. V9 @* R# t$ Q) p
  long int el=123;
7 Q8 t5 q( T% k" L  short i=(int) el;' p. {( d. F9 d/ u% L0 d* ]2 T4 m
  float m=34.56;
% L) Z; z; A; _% x9 u" Q- X9 ~  int i=(int) m;8 |3 R/ t$ C$ P' F
  上面两个都是C风格的强制类型转换,C++还增加了一种转换方式,比较一下上面和下面这个书写方式的不同:# v  r% [! M3 l/ ]5 R+ A
  long int el=123;% X* m, M; E' n* [$ T
  short i=int (el);
; J6 {; @, e+ _' K* F4 l  float m=34.56;7 \5 Y4 Y% v  s
  int i=int (m);
% D" \" J* e( e" w" E: s( w  使用强制类型转换的最大好处就是:禁止编译器对你故意去做的事发出警告。但是,利用强制类型转换说明使得编译器的类型检查机制失效,这不是明智的选择。通常,是不提倡进行强制类型转换的。除非不可避免,如要调用malloc()函数时要用的void型指针转换成指定类型指针。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 16:25 , Processed in 0.147622 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表