唯客微博客

专注于计算机,嵌入式领域的技术

0%

C语言类型转换

C语言类型转换

  • 无符号数小范围转大范围:不改变数据内容
  • 无符号数大范围转小范围:先截断,然后解释
  • 有符号数小范围转大范围:进行符号扩展
  • 有符号数大范围转小范围:先截断,然后解释
  • 有符号与无符号互转:不改变数据内容,改变解释方式
  • 无符号数转有符号大范围:不改变数据内容
  • 无符号数转有符号小范围:先截断,然后解释
  • 有符号数转无符号大范围:先进行符号扩展,然后改变解释方式
  • 有符号数转无符号小范围:先截断,然后解释

int8_t

  • int8_t -> uint8_t: 不改变数据内容,改变解释方式
  • int8_t -> int16_t: 进行符号扩展
  • int8_t -> uint16_t: 先进行符号扩展转为int16_t,然后改变解释方式
  • int8_t -> int32_t: 进行符号扩展
  • int8_t -> uint32_t: 先进行符号扩展转为int32_t,然后改变解释方式

uint8_t

  • uint8_t -> int8_t: 不改变数据内容,改变解释方式
  • uint8_t -> int16_t: 不改变数据内容
  • uint8_t -> uint16_t: 不改变数据内容
  • uint8_t -> int32_t: 不改变数据内容
  • uint8_t -> uint32_t: 不改变数据内容

int16_t

  • int16_t -> int8_t: 先截断,然后解释
  • int16_t -> uint8_t: 先截断,然后解释
  • int16_t -> uint16_t: 不改变数据内容,改变解释方式
  • int16_t -> int32_t: 进行符号扩展
  • int16_t -> uint32_t: 先进行符号扩展转为int32_t,然后改变解释方式

uint16_t

  • uint16_t -> int8_t: 先截断,然后解释
  • uint16_t -> uint8_t: 先截断,然后解释
  • uint16_t -> int16_t: 不改变数据内容,改变解释方式
  • uint16_t -> int32_t: 不改变数据内容
  • uint16_t -> uint32_t: 不改变数据内容

int32_t

  • int32_t -> int8_t: 先截断,然后解释
  • int32_t -> uint8_t: 先截断,然后解释
  • int32_t -> int16_t: 先截断,然后解释
  • int32_t -> uint16_t: 先截断,然后解释
  • int32_t -> uint32_t: 不改变数据内容,改变解释方式

uint32_t

  • uint32_t -> int8_t: 先截断,然后解释
  • uint32_t -> uint8_t: 先截断,然后解释
  • uint32_t -> int16_t: 先截断,然后解释
  • uint32_t -> uint16_t: 先截断,然后解释
  • uint32_t -> int32_t: 不改变数据内容,改变解释方式
-------------本文结束感谢您的阅读-------------

本文标题:C语言类型转换

文章作者:Vinx

发布时间:2023年08月07日 - 09:16

最后更新:2023年10月31日 - 09:13

原始链接:https://blog.vinkvin.com/post/94/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。