不同类型变量之间相互赋值问题
本帖最后由 etec 于 2024-10-20 11:09 编辑各位老师,想请教一个不同类型变量之间赋值,是否需要强制转换问题
变量定义:signed long int a, float b,unsigned long int c;
例如变量 b = 90000.0
为了保证计算精度,程序中计算一些数据时会用浮点数计算,计算完后,在调用这个变量时,小数点后数据可以不用
此时 将变量b 赋值给变量a ,变量b的小数点后数据不需要传递给变量a
代码是用 a = b;还是用 a = (signed long int)b;
例如变量 c = 90000
为了提高计算精度会将变量c装换成浮点数去参与计算
此时 将变量c 赋值给变量b ,
代码是用 b = c;还是用 b = (float)c;
变量c转换变量b后,精度是否会受影响。
大部分不同变量之间是可以直接赋值操作的,编译器会适配处理的。一般涉及到强制类型转换的场合主要有函数参数的类型不一致、指针类型不一致会导致出现直接的错误或编译报错。 分2种情况:自动转换和强制转换,否则编译器会报警告或错误。1.自动转换如图。①若参与运算量的类型不同,则先转换成同一类型,然后进行运算 ②转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算 a、若两种类型的字节数不同,转换成字节数高的类型 b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型 ③所有的浮点运算都是以双精度进行的,即使是两个float单精度量运算的表达式,也要先转换成double型,再作运算. ④char型和short型参与运算时,必须先转换成int型 ⑤在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。 如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。 2.强制类型转换 强制类型转换一般格式如下: (类型名)(表达式) 这种强制类型转换操作并不改变操作数本身 远行的鹿 发表于 2024-10-20 15:12
分2种情况:自动转换和强制转换,否则编译器会报警告或错误。1.自动转换如图。①若参与运算量的类型不同, ...
这个真详细说明各种变量啊 推荐还是用强制转换,这样自己更清楚代码会怎么做,避免出现自己不想要的结果,减少程序bug。 远行的鹿 发表于 2024-10-20 15:12
分2种情况:自动转换和强制转换,否则编译器会报警告或错误。1.自动转换如图。①若参与运算量的类型不同, ...
{:4_250:}
页:
[1]