C语言中类型强制转换什么意思?通俗点怎么解释,不要定义
发布网友
发布时间:2022-04-23 11:28
我来回答
共5个回答
热心网友
时间:2023-10-12 08:16
类型转换嘛,很容易理解的啦。
类型转换分两种,一种是水到渠成的转换,这种转换没有任何错误,不会损失精度(比如1.23 不会变成1.2)、不会超出值域,是不带强制性的,这种转换是不用强制指定的,程序会自动完成,反正也不会对你的数字产生任何不好的影响。(就像小孩子希望自己马上长大,然后作为一个神,你就立马实现了他的愿望,反正他将来一定会混成这*样的。。。)
另一种转换是会产生不好的影响的,换句话说,也就是需要付出一些代价的,比如精度,你把要3.1415926535897936转成成单精度的浮点数,他就会成为3.141592,然后后面的精度就没有了,这是精度的损失。还有就是值域的损失,你把一个int值给一个short,int值有4个字节,short只有2个字节,后者压根就表示不了那么大的数字,所以就只能截断取数字了。这两种损失都会对程序产生可能的负面影响,所以需要强制执行。
热心网友
时间:2023-10-12 08:16
接受一个数,返回一个数,但返回的数和原数具有不同的类型——所以可以有不同的运算规则
热心网友
时间:2023-10-12 08:17
强制:就是把是需要的类型转为需要的类型。例如:int a = 1; int *p1 = &a ; char *p2 = (char *)p2;
热心网友
时间:2023-10-12 08:17
假如你一开始定义了一个float,实型数据,但你想输出一个整型的,就可以强制转换
#include<stdio.h>
void main()
{
float a=1;
printf("%d",(int)a);
}
这样输出的就是1,否则是1.000000。
不管定义1点几,输出都是1
热心网友
时间:2023-10-12 08:18
就是编程人员自觉地将一个a类型的数据显示转化成b类型的数据.如下面代码:
int a, b;
float c = 12.3;
a = c;
b = (int)c;
结果是a与b的值都是12.其中,代码a=c是隐式转换,就是编译器发现类型不匹配自动给转的.
而b = (int)c就是强制类型转换.
一般而言,类型转换有精度损失或者内存大小不匹配问题,编译器通常会报警告.而使用强制类型转换时,编程人员通过这种方式告诉编译器,这种转换造成的问题我已知道,你不用警告我了.