永发信息网

C语言中类型强制转换什么意思?通俗点怎么解释,不要定义

答案:5  悬赏:40  手机版
解决时间 2021-01-14 19:50
C语言中类型强制转换什么意思?通俗点怎么解释,不要定义
最佳答案
类型转换嘛,很容易理解的啦。

类型转换分两种,一种是水到渠成的转换,这种转换没有任何错误,不会损失精度(比如1.23 不会变成1.2)、不会超出值域,是不带强制性的,这种转换是不用强制指定的,程序会自动完成,反正也不会对你的数字产生任何不好的影响。(就像小孩子希望自己马上长大,然后作为一个神,你就立马实现了他的愿望,反正他将来一定会混成这逼样的。。。)

另一种转换是会产生不好的影响的,换句话说,也就是需要付出一些代价的,比如精度,你把要3.1415926535897936转成成单精度的浮点数,他就会成为3.141592,然后后面的精度就没有了,这是精度的损失。还有就是值域的损失,你把一个int值给一个short,int值有4个字节,short只有2个字节,后者压根就表示不了那么大的数字,所以就只能截断取数字了。这两种损失都会对程序产生可能的负面影响,所以需要强制执行。
全部回答
接受一个数,返回一个数,但返回的数和原数具有不同的类型——所以可以有不同的运算规则
强制:就是把是需要的类型转为需要的类型。例如:int a = 1; int *p1 = &a ; char *p2 = (char *)p2;
假如你一开始定义了一个float,实型数据,但你想输出一个整型的,就可以强制转换
#include
void main()
{
float a=1;
printf("%d",(int)a);
}
这样输出的就是1,否则是1.000000。
不管定义1点几,输出都是1
就是编程人员自觉地将一个a类型的数据显示转化成b类型的数据.如下面代码:
int a, b;
float c = 12.3;
a = c;
b = (int)c;
结果是a与b的值都是12.其中,代码a=c是隐式转换,就是编译器发现类型不匹配自动给转的.
而b = (int)c就是强制类型转换.
一般而言,类型转换有精度损失或者内存大小不匹配问题,编译器通常会报警告.而使用强制类型转换时,编程人员通过这种方式告诉编译器,这种转换造成的问题我已知道,你不用警告我了.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是什么什么我爱什么什么我愿什么什么
求嗓子疼偏方
金立手机s6怎么多屏互动
一代女皇吃了之后反而胖了是怎么回事?
美国短跑女飞人乔伊娜是怎么会死的?
拍护照照片要穿什么衣服
姜育恒 《寂寞》这首歌的歌词
c#如何解析这样的[" {"name":"测试","rounts"
高度7.9米的房子应该建几层
卡尔费休是均一溶液么,每天标定需要摇匀么
“空忆谢将军”一句用典,请分析其用意
雄爷的那款天蚕口服含片怎么样?
我想自己铺地砖,请问内行底下要铺多厚的混合
昂达主板配什么显卡
单选题2007年6月15日,中央电视台经济频道《
推荐资讯
运动场上正在进行长跑比赛.在每位参加赛跑的
三年级有哪些三位数竖式计算和哪些3位数递等
为什么纯羊毛比人造纤维保暖效果好?
MFC中怎样替换原版的按钮,换成美工做的按钮
大学成了旅游热门景区,顶尖大学带头反对。该
钟秋实 楠楠爱你 韩文怎么写
被人恶意公开稳私,诽谤,在家乡成了臭名远扬
下列词语书写完全正确的一项是A.渴暮 取缔 脏
一个公司,总经理招聘面试的你试岗后结果你没
10万的本钱可以去做什么生意?
日主庚金走丙申大运流年丙申好吗
怀化火车站旁有哪些住宿?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?