范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C语言数据类型转换自动类型转换和强制类型转换

  自动类型转换
  自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。
  1) 将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如:
  float f = 100;
  100 是 int 类型的数据,需要先转换为 float 类型才能赋值给变量 f。再如:
  int n = f;
  f 是 float 类型的数据,需要先转换为 int 类型才能赋值给变量 n。
  在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型转换为左边变量的类型,这可能会导致数据失真,或者精度降低;所以说,自动类型转换并不一定是安全的。对于不安全的类型转换,编译器一般会给出警告。
  2) 在不同类型的混合运算中,编译器也会自动地转换数据类型,将参与运算的所有数据先转换为同一种类型,然后再进行计算。转换的规则如下: 转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低。例如,int 和 long 参与运算时,先把 int 类型的数据转成 long 类型后再进行运算。 所有的浮点运算都是以双精度进行的,即使运算中只有 float 类型,也要先转换为 double 类型,才能进行运算。 char 和 short 参与运算时,必须先转换成 int 类型。
  下图对这种转换规则进行了更加形象地描述:
  unsigned 也即 unsigned int,此时可以省略 int,只写 unsigned。
  自动类型转换示例:
  #include int main(){  float PI = 3.14159;  int s1, r = 5;  double s2;     s1 = r * r * PI;     s2 = r * r * PI;  printf("s1=%d, s2=%f ", s1, s2);   return 0; }
  运行结果:
  s1=78, s2=78.539749
  在计算表达式 r*r*PI  时,r 和 PI 都被转换成 double 类型,表达式的结果也是 double 类型。但由于 s1 为整型,所以赋值运算的结果仍为整型,舍去了小数部分,导致数据失真。 强制类型转换
  自动类型转换是编译器根据代码的上下文环境自行判断的结果,有时候并不是那么"智能",不能满足所有的需求。如果需要,程序员也可以自己在代码中明确地提出要进行类型转换,这称为强制类型转换。
  自动类型转换是编译器默默地、隐式地进行的一种类型转换,不需要在代码中体现出来;强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。换句话说,自动类型转换不需要程序员干预,强制类型转换必须有程序员干预。
  强制类型转换的格式为: (type_name) expression
  type_name  为新类型名称, expression  为表达式。例如:
  (float) a; //将变量 a 转换为 float 类型 (int)(x+y); //把表达式 x+y 的结果转换为 int 整型 (float) 100; //将数值 100(默认为int类型)转换为 float 类型
  下面是一个需要强制类型转换的经典例子:
  #include  int main(){  int sum = 103; //总数  int count = 7; //数目  double average; //平均数     average = (double) sum / count;  printf("Average is %lf! ", average);   return 0; }
  运行结果:
  Average is 14.714286!
  sum 和 count 都是 int 类型,如果不进行干预,那么 sum / count
  的运算结果也是 int 类型,小数部分将被丢弃;虽然是 average 是 double 类型,可以接收小数部分,但是心有余力不足,小数部分提前就被"阉割"了,它只能接收到整数部分,这就导致除法运算的结果严重失真。
  既然 average 是 double 类型,为何不充分利用,尽量提高运算结果的精度呢?为了达到这个目标,我们只要将 sum 或者 count 其中之一转换为 double 类型即可。上面的代码中,我们将 sum 强制转换为 double 类型,这样 sum / count
  的结果也将变成 double 类型,就可以保留小数部分了,average 接收到的值也会更加精确。
  在这段代码中,有两点需要注意: 对于除法运算,如果除数和被除数都是整数,那么运算结果也是整数,小数部分将被直接丢弃;如果除数和被除数其中有一个是小数,那么运算结果也是小数。这一点已在《C语言加减乘除运算》中进行了详细说明。 ( )  的优先级高于 /  ,对于表达式 (double) sum / count  ,会先执行 (double) sum  ,将 sum 转换为 double 类型,然后再进行除法运算,这样运算结果也是 double 类型,能够保留小数部分。注意不要写作 (double) (sum / count)  ,这样写运算结果将是 3.000000,仍然不能保留小数部分。 类型转换只是临时性的
  无论是自动类型转换还是强制类型转换,都只是为了本次运算而进行的临时性转换,转换的结果也会保存到临时的内存空间,不会改变数据本来的类型或者值。请看下面的例子:
  #include  int main(){  double total = 400.8; //总价  int count = 5; //数目  double unit; //单价  int total_int = (int)total;     unit = total / count;  printf("total=%lf, total_int=%d, unit=%lf ", total, total_int, unit);   return 0; }
  运行结果:
  total=400.800000, total_int=400, unit=80.160000
  注意看第 6 行代码,total 变量被转换成了 int 类型才赋值给 total_int 变量,而这种转换并未影响 total 变量本身的类型和值。如果 total 的值变了,那么 total 的输出结果将变为 400.000000;如果 total 的类型变了,那么 unit 的输出结果将变为 80.000000。 自动类型转换 VS 强制类型转换
  在C语言中,有些类型既可以自动转换,也可以强制转换,例如 int 到 double,float 到 int 等;而有些类型只能强制转换,不能自动转换,例如以后将要学到的 void * 到 int *,int 到 char * 等。
  可以自动转换的类型一定能够强制转换,但是,需要强制转换的类型不一定能够自动转换。现在我们学到的数据类型,既可以自动转换,又可以强制转换,以后我们还会学到一些只能强制转换而不能自动转换的类型。
  可以自动进行的类型转换一般风险较低,不会对程序带来严重的后果,例如,int 到 double 没有什么缺点,float 到 int 顶多是数值失真。只能强制进行的类型转换一般风险较高,或者行为匪夷所思,例如,char * 到 int * 就是很奇怪的一种转换,这会导致取得的值也很奇怪,再如,int 到 char * 就是风险极高的一种转换,一般会导致程序崩溃。
  使用强制类型转换时,程序员自己要意识到潜在的风险。

育碧特惠孤岛惊魂6系列革新之作,拉美现实主义故事以下内容,剧透警告!!!随着第三人称叙事和精简化RPG等设计的加入,孤岛惊魂6无疑成为了系列的革新之作和集大成。在使命召唤和战地双双反向卧龙凤雏后,主打RPG孤岛惊魂6反而成为了2DNF大转移前60版本剧情2初到艾尔文防线当冒险家再次醒过来的时候,发现自己穿着衣服,躺在了一张柔软到没有什么感觉的大床上。周边的环境已经不是洛兰泥泞的丛林,而是一个方方正正的房子。房子从地板到墙面再到屋顶都是原木的。甚至赖神巅峰赛撞车桑杰,两大顶级边路强强联手,能否拿下对决?大家都知道主播圈子里绝活哥最多的就是对抗路,其中最具代表性的选手就是赖神树叶桑杰等人,这天赖神正常进行巅峰赛,结果撞车桑杰。得知自己撞车赖神后,桑杰的心情也是非常激动,随后双方都拿英国实体周销榜战神5登顶索尼克第四英国实体游戏销售的最新数据出炉。本周发售的战神诸神黄昏强势登顶,顶替了COD19的位置。而与战神同一天发售的索尼克未知边境也来到了第4名,表现也很强劲。此外,前十的榜单中,任天堂依再次火爆出圈!坦克世界EBR75(FL10)惊喜无极限第十四届中国航展双十一购物狂欢节,这个十一月的惊喜非常多,而且每个都是重磅内容。而在军武圈,坦克世界同样火爆出圈了,它既直播了中国航展,又在盛惠决战双十一活动中大放福利,还有即将进小明转会期无人问津,自身3大缺点暴露,只能无奈续约RNG最近关于转会期的内容真的太多了,完全可以用应接不暇来形容这次的转会期,有很多战队都进行了大刀阔斧的重建,或者是补强,有一些顶级选手也开始离开原来的战队,组成新的银河战舰,真的让人很游戏推荐我们为什么怀念仙剑4听说仙剑奇侠传4影视剧目前正在拍摄中,这部于2007年发售的游戏,在时隔15年之后被拿来翻拍,很难说不是内娱编剧们集体摆烂的证明。即使是仙剑系列已经出到第9部作品仙剑奇侠传7(前几2022共创之夜王者荣耀都公布了哪些游戏?近两年随着原神的爆火,让手游圈内的格局发生了变化,曾经的吸金霸主王者荣耀显现出了疲软之力。每次原神更新大版本都会引发一波新热度,让它成为全球最吸金的游戏。在这里我并不拉踩任何一个游4种方式,补充血清素,愉悦情绪,缓解抑郁焦虑抑郁焦虑失眠多梦中医治疗抑郁焦虑失眠血清素(5羟色胺)是一种大脑神经传递物质,属于蛋白质,主要成分为5羟色胺。它控制着身体的饮食行为认知功能情绪调控,所以血清素异常,会导致失眠焦虑每日一方止咳敛肺第一方九仙散,咳嗽痰多气短都可用大家好,我是屈医生。对于容易咳嗽,嗓子有痰的朋友,我给大家推荐一个医圣张仲景专门敛肺止咳,益气养阴的方子敛肺止咳剂,又叫九仙散。这个方子是专门来调理久咳伤肺,气阴两伤证的,也就是说医生警惕5种食物,易诱发癌症,购买时一定注意,别拿命开玩笑很多人发现在当今的社会里有这样一个现象存在,那就是患病的人越来越多,不分男女,不分老少。现在的生活质量提高了,人类想吃什么就可以吃什么,相比以前,多少人经常饿着肚子,但并没有像现在
2022最新移动端处理器性能排行第一不是A16!文名动科技处理器性能表现,一直是许多用户在更换新手机时格外关注的一个配置,毕竟处理器的性能强弱,将会直接影响到用机体验。那么在目前,哪款处理器的性能最为强悍?刚新出的骁龙8Gen2克服这三件事情,突破舒适圈,你可以变得更好!嘿!女孩!一定要突破自己的舒适圈!其实,我们每个人都生活在一个无形的圈里,在这个圈里,有我们所熟悉的一切,所有的事物都在我们的掌控能力范围之内,在这里我们感到轻松自在。这个无形的圈听损人群新工具声智灵耳辅听耳机评测真无线耳机因为其方便的使用体验,渐渐成为了耳机产品中市场份额的佼佼者。随着耳机产品的普及,各种不同的耳机使用需求也渐渐被关注到。我们身边存在耳背现象的群体并不少见,他们使用媒体设备点外卖无骑手接单,男子注册为骑手取外卖很多骑手阳了,感觉大家都不容易12月18日,内蒙古包头市,一男子因点外卖一个小时无骑手接单,自己注册成骑手,取回外卖。当事人赵先生表示,外卖小哥大多都阳了,大家都不容易,希望疫情早日结束。点外卖近一小时无人接单为什么你感觉生活无聊?因为这五种有毒的行为比起每天重复单调乏味的生活,每个人都希望生活过得丰富精彩。也许通过一些娱乐活动,比如看电影,唱歌,玩游戏等等来缓解一时的无聊。但比起做这些活动,更重要的是不要做让生活变得无聊的事。今年没有一件呢子裙可惜了,既保暖又时髦,就连质感都很高级我们不断追求的穿衣有道,无非就是能够在合适的季节匹配合适的着装。遇到季节更替的时候,也可以根据自我审美优势,对着装进行扬长避短的调整。虽然时尚圈的审美在不断的变化,但每一个阶段的潮Sonos发布全新低音炮SubMini,主打低频,售价4299元12月20日,Sonos发布了一款针对家庭影院的小型无线低音炮SubMini,清晰以及丰富的低频音效是其主打的优势。SubMini采用紧凑型的圆柱性设计,直径22cm,更加的小巧与盘点市面上珠光宝气的TWS旗舰耳机,华为OPPO小米哪个是你的菜和手机一样,市场上的智能耳机也有很多配色。例如,近日OPPOEncoX2就推出了一个新配色金色流年。该配色一改往日OPPO耳机主打时尚清新的格调,采用了金色的外观,浑身散发出一种优善恶终有报天道好轮回爱善恶终有报,天道好轮回。不信抬头看,苍天饶过谁。人这辈子,要有底线,更要有自知之明。天地万物都有自己的运行规律,最起码的底线是善良。要知道敬畏,但是还是有许多人无知者无畏。刘备曾微信输入法,终于来了!万众瞩目的微信输入法,终于登场了!这个瓜老狐得好好吃一下。12月18日,微信输入法微信键盘上线,正式登陆苹果安卓等应用市场,用户可免费下载。老狐下载了并试用了一下,感觉还是有些独特字画收藏套路深今年5月,重庆市检察院第五分院重庆市渝中区检察院检察官联合开展防范养老诈骗保护群众合法财产普法宣讲活动。今年9月,重庆市检察院第五分院检察官对张某路某集资诈骗案出庭支持公诉。资料图