找回密码
 立即注册
查看: 481|回复: 5

不同类型变量之间相互赋值问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-27 11:35:30

13

主题

23

回帖

148

积分

注册会员

积分
148
发表于 2024-10-20 11:01:44 | 显示全部楼层 |阅读模式
本帖最后由 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后,精度是否会受影响。
   

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-10-20 11:18:38 | 显示全部楼层
大部分不同变量之间是可以直接赋值操作的,编译器会适配处理的。一般涉及到强制类型转换的场合主要有函数参数的类型不一致、指针类型不一致会导致出现直接的错误或编译报错。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:177
  • 最近打卡:2025-04-30 13:52:43

10

主题

134

回帖

993

积分

高级会员

积分
993
发表于 2024-10-20 15:12:07 | 显示全部楼层
分2种情况:自动转换和强制转换,否则编译器会报警告或错误。1.自动转换如图。①若参与运算量的类型不同,则先转换成同一类型,然后进行运算
        ②转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算
            a、若两种类型的字节数不同,转换成字节数高的类型
            b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型
        ③所有的浮点运算都是以双精度进行的,即使是两个float单精度量运算的表达式,也要先转换成double型,再作运算.
        ④char型和short型参与运算时,必须先转换成int型
        ⑤在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。
             如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。
2.强制类型转换
        强制类型转换一般格式如下:
            (类型名)(表达式)
        这种强制类型转换操作并不改变操作数本身
c语言数据自动转换.png
c语言数据类型知道转换.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-10-20 15:14:57 来自手机 | 显示全部楼层
远行的鹿 发表于 2024-10-20 15:12
分2种情况:自动转换和强制转换,否则编译器会报警告或错误。1.自动转换如图。①若参与运算量的类型不同, ...

这个真详细说明各种变量啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:177
  • 最近打卡:2025-04-30 13:52:43

10

主题

134

回帖

993

积分

高级会员

积分
993
发表于 2024-10-20 15:15:52 | 显示全部楼层
推荐还是用强制转换,这样自己更清楚代码会怎么做,避免出现自己不想要的结果,减少程序bug。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

905

积分

高级会员

积分
905
发表于 2024-10-20 19:42:40 来自手机 | 显示全部楼层
远行的鹿 发表于 2024-10-20 15:12
分2种情况:自动转换和强制转换,否则编译器会报警告或错误。1.自动转换如图。①若参与运算量的类型不同, ...

REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 04:16 , Processed in 0.196059 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表