C语言中类型转换

前言

从0开始记录我的学习历程,我会尽我所能,写出最最大白话的文章,希望能够帮到你,谢谢。


提示:文章作者为初学者,有问题请评论指正,感谢。

数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题.

转换的方法有两种:

  1. 自动类型转换

  • 这种转换是编译器自己悄咪咪做嘞,不需要我们去手动干预。
  • 当两种不同的数据类型进行运算时,编译器会自动把一种类型转换成另一种类型,以保证运算能正常进行。
  • 比如,当 int 类型和 float 类型一起运算时,int 通常会自动转换成 float 类型,因为 float 类型能存更精确的数。
  • 强制类型转换

  • 这种转换是我们告诉编译器,我要把这个数据的类型改变成我想要的类型。
  • 使用强制类型转换时,我们需要在要转换的值前面加上括号,并在括号中写上我们想要转换成的类型。
  • 比如,如果我们有一个 float 类型的变量 f,我们想把它转换成 int 类型,我们就可以写成 (int)f

  自动转换:

  1. 小容量向大容量转换:如果一个表达式中有多种类型的数据,编译器会自动把小容量的数据类型转换成大容量的数据类型。比如,char 会转换成 intint 会转换成 float,以此类推。

  2. 整数提升:在某些操作中,比如位操作,较小的整数类型(比如 char 和 short)会被提升到至少 int 类型的大小,然后再进行计算。

  3. 默认整数类型:如果一个数字没有明确指定类型,比如没有写 L 表示 long 或者 F 表示 float,那么它会被当作 int 或 double 类型处理。

  4. 浮点数运算:在涉及浮点数的运算中,如果一个操作数是 double 类型,那么另一个操作数也会被转换成 double 类型,即使它原本是 float 或 int

  5. 赋值时的转换:在赋值操作中,右边的值会被转换成左边变量的类型。如果右边的类型比左边的小,就会发生自动类型转换。

  6. 函数参数传递:当函数参数被传递时,如果实际参数的类型与形式参数的类型不匹配,实际参数会被自动转换成形式参数的类型。

  注意:自动类型转换都是在运算的过程中进行临时性的转换,并不会影响自动类型转换的变量的值和其类型。

强制转换:

强制类型转换,就是我们手动告诉计算机,把一个数据类型的变量转换成另一个数据类型。在C语言中,这通常是因为我们想要进行一些特殊的操作,需要变量是特定的类型。下面是详细的解释:

  1. 怎么做强制类型转换:我们通过在变量前面加上括号,并在括号里写上我们想要转换成的类型来实现。比如,(float)number 就是把 number 强制转换成 float 类型。

  2. 强制类型转换的例子

    • 假设我们有一个整数 int number = 5; 和一个浮点数 float sum = 1.2;
    • 我们想要把 number 除以 2 后加到 sum 上,但是我们希望保持小数部分,所以我们可以这样写:
      sum += (float)number / 2;
      
    • 这里,(float)number 将 number 从 int 类型强制转换成 float 类型,然后再进行除法运算,这样结果中就包含了小数部分。
  3. 注意事项

    • 强制类型转换可能会导致数据精度的丢失,比如把浮点数转换成整数时,小数部分会被截断。
    • 在使用强制类型转换时,要确保转换后的数据类型能够容纳原始数据,否则可能会产生意外的结果.                                                                                      

总结

以上就是今天要讲的内容,本文仅仅简单介绍了C语言中自动类型转换和强制类型转换,祝愿你我的朋友在学习的路上一帆风顺,也祝愿我会成为一个优秀的嵌入式工程师。

 

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值