C语言强制类型转换
发布网友
发布时间:2022-04-23 11:28
我来回答
共15个回答
热心网友
时间:2022-04-13 00:01
强制类型转换是把变量从一种类型转换为另一种数据类型。
例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型。
扩展资料:
举例说明
使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:
#include <stdio.h>int main()
{
int sum = 17, count = 5;
double mean;
mean = (double) sum / count;
printf("Value of mean : %f\n", mean );
}
当上面的代码被编译和执行时,它会产生下列结果:
Value of mean : 3.400000
参考资料来源:百度百科-C语言
热心网友
时间:2022-04-13 01:19
强制类型转换是把变量从一种类型转换为另一种数据类型。
例如,如果想存储一个long类型的值到一个简单的整型中,需要把long类型强制转换为int类型。可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型。
发生在同一个编译系统中,比如说把int转化为longint,在VC++6.0里面,longint和int都是4个字节,不会有问题的,但是如果把int类型转化为short类型那就装不下了,简而言之就是长类型不能转化为短类型。
int类型如果要转化为float、double、longdouble类型的时候只是末尾多了几个0,但是反之转化,就会出现数据的损失,小数部位都被省略掉了。
赋值中的类型转换
当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。
由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。double型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。
以上内容参考:百度百科-C语言类型强制转换
热心网友
时间:2022-04-13 02:53
好问题!
C语言中这样的转换,转换的是和(double)最近的右边的数据,运算级别低于括号,但是高于乘除、加减、赋值符等;而你考虑的k/m的问题:这个关键看进行二元运算的精度的最高级别,二元运算的两个变量中:精度较低的会自动转换为精度较高的;
#include<stdio.h>
main(){
int m,n,num;
char t='0',th;
double dou_1,dou_2,dou_3;
m=5;n=321;
num=t/((float)m/n);
dou_1=(double)(n/m);
dou_2=n/m;
dou_3=(double)n/m;
th=(double)n/m;
printf("%d,%f,%f,%f,%c",num,dou_1,dou_2,dou_3,th);
getch();
}
用这个多试试,会有较深的理解。
热心网友
时间:2022-04-13 04:45
其实是先转换k,因为()的优先级高于/,但是double精度类型高于int型m,故最后的结果还是double型 。假如:k=1,m=2,则(double)k/m=0.500000
(double)(k/m)=0.000000
热心网友
时间:2022-04-13 06:53
强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。
1、显式强制类型转换
显式强制类型转换需要使用强制类型转换运算符,格式如下:
type(<expression>)或(type)<expression>
其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int
nVar=0xab65;
char
cChar=char
(nVar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。
2、隐式强制类型转换
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回,如:
int
nVar;
double
dVar=3.88;
nVar=dVar;//执行本句后,nVar的值为3,而dVar的值仍是3.88
热心网友
时间:2022-04-13 09:17
(type)<expression>
其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
intnVar=0xab65;
charcChar=char(nVar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。
热心网友
时间:2022-04-13 11:59
我怎么感觉这是单片机里的代码。
t的结果是浮点数。如果t为0点几,强转后就是0了。
如果按照你说的t等于2506.75,强转后就是2506
如果发现结果不对,可以这样调试:
直接写
t=2506.75;//t是浮点数
uint
a=(uint)t;//你看看a是不是0,肯定不是0
热心网友
时间:2022-04-13 14:57
(type)
其中,type为类型描述符,如int,float等。
为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
intnvar=0xab65;
charcchar=char(nvar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cchar,而经过类型转换后nvar的值并未改变。
热心网友
时间:2022-04-13 18:11
在赋值表达式中,当左右两边数据类型不同时,右边的数据类型应变为左值(变量)的数据类型,同时编译器也能自动进行类型转换,将低字节数据类型转换为高字节类型,例如:int转换为long
int,当不同的数据类型相互赋值时还有精度缺失问题,例如:将int赋给char,只是将低八位(一个字节)赋给它,希望可以帮到你!
热心网友
时间:2022-04-13 21:43
float是4字节,700000的二进制是:
10001000101110000
char是1字节,故fFloat变量会被截断,只有低8位才会被赋给cChar,即01110000,也就是10进制的112,112正式字符“p”的ASCII码。所以程序会输出“p”。
热心网友
时间:2022-04-14 01:31
我来原创吧。。
C是c++他老爸,但是c++青出于蓝而胜于蓝,更强大。
C是过去面向过程的语言,而c++具有面向对象的特征:封装、多态、继承等特性。。c++还兼容C的一些特性,支持:面向过程、基于对象、面向对象与泛型编程。。
因此c++是非常 强大的语言,而C是非常经典的语言。
热心网友
时间:2022-04-14 05:35
你说怎么进行强制类型转换的啊?
unsigned
int
temp
=
0x0191;
float
t
=
temp
*
0.0625
*
100
+
0.5;
printf("%f---
%d\n",t,(unsigned
int
)t);
我这个样子是对的啊,输出:2506.750000---
2506
热心网友
时间:2022-04-14 09:57
(double)k/m
等价于
((double)k)/m
热心网友
时间:2022-04-14 14:51
最好写成(double)(k/m),这样看起来更清晰。
c语言中如何将int数字转化为char
答案:在C语言中,可以使用强制类型转换的方式将int数字转化为char。具体方法是使用强制类型转换符号括号将int数字转换为对应的ASCII码值,并将其赋值给char变量。下面是一些简单的代码示例来说明如何进行转换。详细解释:C语言中,字符实质上是通过其对应的ASCII码在计算机中存储的。因此,将一个整数转换为...
c语言中可使用强制转换吗?
可以使用强制转换,其一般形式为:(类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float) a 把a转换为浮点型,(int)(x+y) 把x+y的结果转换为整型。这种方法显然对浮点型数据的精度会有影响,且注意最终输出的形式不同结果也是不同的,若要保留数字...
c语言中如何强制转换实数类型
C语言中没有实数类型,实数类型是浮点数类型方式显现的。强制类型转换是通过类型转换运算来实现的。其一般形式为:类型说明符加上表达式,其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。C语言中float为浮点数类型,在float后面的括号中加上所需转化的表达式或数字即可转化为浮点数类型。
c语言如何将double转换为int
在C语言中,可以使用强制类型转换将double类型转换为int类型。强制类型转换的语法如下:int i = (int) d;其中,d是double类型的变量,(int)是强制类型转换符,将d的值转换为int类型,并将结果赋值给变量i。请注意,强制类型转换会将double类型的小数部分截断,只保留整数部分。如果double类型的值超出了...
C语言强制类型转换
强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。1、显式强制类型转换 显式强制类型转换需要使用强制类型转换运算符,格式如下:type()或(type)其中,type为类型描述符,如int,float等。为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不...
c语言中强制类型转换后原变量值和数据类型不变 对吗?
强制类型转换是把变量从一种类型转换为另一种数据类型。这话完全正确。例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型。但这只适用于本次使用,原变量的类型及其中的值都不...
C语言数据类型的自动转换和强制转换有什么区别
1、自动转换:是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。2、强制转换:所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。参考资料来源:百度百科-C语言类型强制转换 参考资料来源:百度百科-自动类型转换 ...
C语言数据类型的自动转换和强制转换有什么区别
C语言数据类型转换分自动转换和强制转换两类。自动转换 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。2.转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成...
c语言强制类型转换
1、int a;int b;double c = (double) a;double c = (double) b;int a = (int) c;这就是一种强制转变方法。2、long int c;(int)c;如果C变量是长整型,那么之下的语句就是将长整型转变成为整型的过程。3、()内是要转变的类型,当然相互之间的转变也同时遵循可行性原则。4、强制转变...
c语言:int型的强制类型转换是按四舍五入吗?
INT函数指数据库中常用函数中的“向下取整函数”。常用来取一个数中的整数部分。Int是将一个数值向下取整为最接近的整数的函数。为取整函数。意思是将被转换数直接截取整数部分,不进行四舍五入运算。例如:int(123.456);//取值为123 int(-123.456);//取值为124 int(1234.56);//取值为1234 ...