0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

强制类型转换是把变量从一种类型转换为另一种数据类型

电子工程师 来源:未知 作者:李倩 2018-11-12 14:59 次阅读

强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型,如下所示:

(type_name) expression

请看下面的实例,使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:

#includeintmain()

{ intsum = 17, count = 5;

doublemean; mean = (double)sum / count;

printf("Value of mean : %f ", mean); }

当上面的代码被编译和执行时,它会产生下列结果:

Value of mean :3.400000

这里要注意的是强制类型转换运算符的优先级大于除法,因此sum的值首先被转换为double型,然后除以 count,得到一个类型为 double 的值。

类型转换可以是隐式的,由编译器自动执行,也可以是显式的,通过使用强制类型转换运算符来指定。在编程时,有需要类型转换的时候都用上强制类型转换运算符,是一种良好的编程习惯。

整数提升

整数提升是指把小于int或unsigned int的整数类型转换为int或unsigned int的过程。请看下面的实例,在 int 中添加一个字符:

#includeintmain()

{ inti = 17;

charc = 'c'; /* ascii 值是 99 */ intsum; sum = i + c;

printf("Value of sum : %d ", sum); }

当上面的代码被编译和执行时,它会产生下列结果:

Value of sum :116

在这里,sum 的值为 116,因为编译器进行了整数提升,在执行实际加法运算时,把 'c' 的值转换为对应的 ascii 值。

常用的算术转换

常用的算术转换是隐式地把值强制转换为相同的类型。编译器首先执行整数提升,如果操作数类型不同,则它们会被转换为下列层次中出现的最高层次的类型:

常用的算术转换不适用于赋值运算符、逻辑运算符 && 和 ||。让我们看看下面的实例来理解这个概念:

#includeintmain(){ inti = 17;

charc = 'c'; /* ascii 值是 99 */ floatsum; sum = i + c;

printf("Value of sum : %f ", sum); }

当上面的代码被编译和执行时,它会产生下列结果:

Value of sum :116.000000

在这里,c 首先被转换为整数,但是由于最后的值是 double 型的,所以会应用常用的算术转换,编译器会把 i 和 c 转换为浮点型,并把它们相加得到一个浮点数。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128566
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48614

原文标题:C语言中的强制类型转换

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言中强制类型转化

    可以使用强制类型转换来将一段内存转换为需要的数据类型,例如下面有一个数组a,现在将其强制
    的头像 发表于 09-09 08:58 2132次阅读
    C语言中<b class='flag-5'>强制</b><b class='flag-5'>类型</b>转化

    GaussDB 数据类型介绍

    进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍一些常见的数据类型转换方法等。  数据类型概念及特点
    的头像 发表于 06-05 16:40 1271次阅读
    GaussDB <b class='flag-5'>数据类型</b>介绍

    JAVA语言的数据类型转换

    JAVA语言的数据类型转换很多场合需要用到类型转换。例如,要把个整型变量作为字符型
    发表于 12-06 00:30

    请问使用强制数据类型转换函数的时候,数据类型type端该如何设置,才能使数据成功转换类型

    本帖最后由 只耳朵怪 于 2018-6-26 08:51 编辑 使用强制数据类型转换函数的时候,数据类型type端该如何设置,才能使
    发表于 06-25 20:33

    基础:stateflow中变量强制类型转换

    使用:例:我定义了变量speed作为输出,某时刻指定speed=0,当我speed改为uint8类型,就报错误,找了阵没找到方法,就
    发表于 10-29 10:42

    Verilog 变量声明与数据类型

    Verilog 变量声明与数据类型Verilog语法中最基本的数据类型有 线网(wire),寄存器(reg)和整数(integer)三种类型
    发表于 08-10 14:01

    Windows -编程-数据类型

    驱动开发外包请记住,Rust 是一种静态类型语言,这意味着它必须在编译时知道所有变量类型。编译器通常可以根据值以及我们如何使用它来推断我们想要使用的
    发表于 08-24 14:30

    SystemVerilog中$cast的应用

    SystemVerilog casting意味着将一种数据类型转换为另一种数据类型。在将一个变量赋值给另一
    的头像 发表于 10-17 14:35 2066次阅读

    什么是数据类型转换

    常用的3种数据类型:1、Python数据类型一种:字符串(str)。 2、Python数据类型第二种:整数(int)。 3、Python数据类
    的头像 发表于 02-23 15:21 577次阅读

    什么是数据类型转换

    数据类型转换就是将数据变量、数值、表达式的结果等)从一种类型转换为
    的头像 发表于 02-27 15:04 988次阅读
    什么是<b class='flag-5'>数据类型</b><b class='flag-5'>转换</b>

    PLC数据类型种类 常见的转换方法

      PLC数据类型是指编程软件中用来表示变量、常量、对象等数据类型。不同的PLC软件可能会支持不同的数据类型,但常见的PLC
    发表于 03-17 17:41 2.2w次阅读

    Verilog最常用的2种数据类型

    Verilog 最常用的 2 种数据类型就是线网(wire)与寄存器(reg),其余类型可以理解为这两种数据类型的扩展或辅助。
    的头像 发表于 05-29 16:27 1210次阅读
    Verilog最常用的2<b class='flag-5'>种数据类型</b>

    GaussDB数据类型转换介绍

    数据类型转换在实际应用中非常常见。GaussDB 作为一款企业级分布式关系型数据库,在实际业务场景使用中,也会避免不了数据类型转换。以下是
    的头像 发表于 06-05 16:29 523次阅读
    GaussDB<b class='flag-5'>数据类型</b><b class='flag-5'>转换</b>介绍

    PLC变量数据类型整理

    BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT 和UDINT。 注意,当较长的数据类型转换为较短的数据类型时,会丢失高位信息
    发表于 09-19 12:19 1741次阅读
    PLC<b class='flag-5'>变量</b>的<b class='flag-5'>数据类型</b>整理

    C语言如何掌握强制类型转换的精髓

    强制类型转换是把变量从一种类型转换为另一种数据类型
    的头像 发表于 02-26 11:00 195次阅读
    C语言如何掌握<b class='flag-5'>强制</b><b class='flag-5'>类型</b><b class='flag-5'>转换</b>的精髓