C语言中类型强制转换什么意思?通俗点怎么解释,不要定义
答案:5 悬赏:40 手机版
解决时间 2021-01-14 19:50
- 提问者网友:骑士
- 2021-01-14 14:47
C语言中类型强制转换什么意思?通俗点怎么解释,不要定义
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-01-14 14:52
类型转换嘛,很容易理解的啦。
类型转换分两种,一种是水到渠成的转换,这种转换没有任何错误,不会损失精度(比如1.23 不会变成1.2)、不会超出值域,是不带强制性的,这种转换是不用强制指定的,程序会自动完成,反正也不会对你的数字产生任何不好的影响。(就像小孩子希望自己马上长大,然后作为一个神,你就立马实现了他的愿望,反正他将来一定会混成这逼样的。。。)
另一种转换是会产生不好的影响的,换句话说,也就是需要付出一些代价的,比如精度,你把要3.1415926535897936转成成单精度的浮点数,他就会成为3.141592,然后后面的精度就没有了,这是精度的损失。还有就是值域的损失,你把一个int值给一个short,int值有4个字节,short只有2个字节,后者压根就表示不了那么大的数字,所以就只能截断取数字了。这两种损失都会对程序产生可能的负面影响,所以需要强制执行。
类型转换分两种,一种是水到渠成的转换,这种转换没有任何错误,不会损失精度(比如1.23 不会变成1.2)、不会超出值域,是不带强制性的,这种转换是不用强制指定的,程序会自动完成,反正也不会对你的数字产生任何不好的影响。(就像小孩子希望自己马上长大,然后作为一个神,你就立马实现了他的愿望,反正他将来一定会混成这逼样的。。。)
另一种转换是会产生不好的影响的,换句话说,也就是需要付出一些代价的,比如精度,你把要3.1415926535897936转成成单精度的浮点数,他就会成为3.141592,然后后面的精度就没有了,这是精度的损失。还有就是值域的损失,你把一个int值给一个short,int值有4个字节,short只有2个字节,后者压根就表示不了那么大的数字,所以就只能截断取数字了。这两种损失都会对程序产生可能的负面影响,所以需要强制执行。
全部回答
- 1楼网友:低音帝王
- 2021-01-14 17:43
接受一个数,返回一个数,但返回的数和原数具有不同的类型——所以可以有不同的运算规则
- 2楼网友:行路难
- 2021-01-14 16:53
强制:就是把是需要的类型转为需要的类型。例如:int a = 1; int *p1 = &a ; char *p2 = (char *)p2;
- 3楼网友:十年萤火照君眠
- 2021-01-14 16:04
假如你一开始定义了一个float,实型数据,但你想输出一个整型的,就可以强制转换
#include
void main()
{
float a=1;
printf("%d",(int)a);
}
这样输出的就是1,否则是1.000000。
不管定义1点几,输出都是1
#include
void main()
{
float a=1;
printf("%d",(int)a);
}
这样输出的就是1,否则是1.000000。
不管定义1点几,输出都是1
- 4楼网友:罪歌
- 2021-01-14 15:07
就是编程人员自觉地将一个a类型的数据显示转化成b类型的数据.如下面代码:
int a, b;
float c = 12.3;
a = c;
b = (int)c;
结果是a与b的值都是12.其中,代码a=c是隐式转换,就是编译器发现类型不匹配自动给转的.
而b = (int)c就是强制类型转换.
一般而言,类型转换有精度损失或者内存大小不匹配问题,编译器通常会报警告.而使用强制类型转换时,编程人员通过这种方式告诉编译器,这种转换造成的问题我已知道,你不用警告我了.
int a, b;
float c = 12.3;
a = c;
b = (int)c;
结果是a与b的值都是12.其中,代码a=c是隐式转换,就是编译器发现类型不匹配自动给转的.
而b = (int)c就是强制类型转换.
一般而言,类型转换有精度损失或者内存大小不匹配问题,编译器通常会报警告.而使用强制类型转换时,编程人员通过这种方式告诉编译器,这种转换造成的问题我已知道,你不用警告我了.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯