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

    文章

    7597

    浏览量

    136128
  • 编译器
    +关注

    关注

    1

    文章

    1618

    浏览量

    49043

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

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

收藏 人收藏

    评论

    相关推荐

    GaussDB 数据类型介绍

    进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍些常见的数据类型转换方法等。  数据类
    的头像 发表于 06-05 16:40 1616次阅读
    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

    重视变量数据类型

    不管在什么语言中,定义变量时必然要在内存中开辟个相应大小的空间来存储该变量。不同的数据类型在内存所占的空间大小不同,其所能表示的
    发表于 01-13 15:05 1次下载
    重视<b class='flag-5'>变量</b>的<b class='flag-5'>数据类型</b>

    SystemVerilog中$cast的应用

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

    什么是数据类型转换

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

    什么是数据类型转换

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

    Verilog最常用的2种数据类型

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

    PLC变量数据类型整理

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

    Redis的数据类型有哪些

    用的一种数据类型,普通的key- value 存储都可以归为此类。其中Value既可以是数字也可以是字符串。使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。 2、Hash:Hash 是个键值(
    的头像 发表于 10-09 10:51 761次阅读

    redis的五种数据类型

    Redis是一种高性能的内存数据库,常用于缓存、任务队列、分布式锁等场景。它提供了多种数据类型来满足各种不同的需求,包括字符串(string)、哈希(hash)、列表(list)、集合(set
    的头像 发表于 11-16 11:06 601次阅读

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

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