C语言定义一个int类型时,默认是有符号数,关键字signed常省略,如:

int a;

signed int a;

signed a;

这三句是一样的定义

定义无符号数时,必须加关键字unsigned,如:

unsigned int a ;

unsigned a;

无符号关键字unsigned,只适用于int short long char四种变量,浮点型数据只有有符号类型。

那么为什么float会没有无符号呢?C语言中,整型是采用二进制表示的,而浮点数却是按照整数部分,小数部分,指数部分存放的。

运算也是分开来运算的。这样的做法,使得浮点数可以表示很大的范围,所以unsigned无法作用于float,定义无符号的浮点型会出错。不够的话,可以用double,双精度。

以32位机为例,int 分为无符号 unsigned 和有符号 signed 两种类型,默认为signed。二者的区别就是无符号类型能保存2倍于有符号类型的数据。

32位下,signed int 的表示范围为:-2147483648 ~ 2147483647 (最高位做符号位)。

unsigned int 的表示范围为:0 ~ 4294967295 (不保留符号位)。我们都知道,两个不同的数据类型在进行混合使用时,会自动进行类型转换。

其转换原则就是:向着精度更高、长度更长的方向转换。也就是我们平常见到的 char 转为 int ,int 转为 long,float 转为 double  . etc.

那么当涉及到unsigned 类型时,又会进行怎样转换呢?

ANSI C 标准采用值保留(value preserving)原则,就是当把几个整型操作数混合使用时,其结果的类型可能是有符号数,也可能是无符号数,这取决于操作数的类型的相对大小。

(通俗点说,就是两个整型数,如果都转换为signed不会丢失信息,就转换为signed;否则就转换为unsigned。)

总结:尽量不要在你的代码中使用无符号类型,以免增加不必要的复杂性;或者使用时,在涉及混合运算时,进行强制类型转换,这样就不必由编译器来选择转换类型了。

c语言无符号扩展,C语言无符号和有符号的区别相关推荐

  1. 符号扩展和无符号扩展

    MIPS32 指令集架构中,经常会有指令需要将其中的立即数进行符号扩展,或者无符号扩展,一般都是都是将n位立即数扩展为32位. 无符号扩展:直接将扩展后的数据的高(32-n)位置为0. 符号扩展:将扩 ...

  2. 【汇编优化系列】关于符号扩展和无符号扩展(包括mips msa实现)

    DATE: 2021.11.26 文章目录 前言 1.参考 2.符号扩展和无符号扩展 含义 3.举例说明 4.mips msa相关指令 前言 在mips msa intrinsic工程优化过程中,遇到 ...

  3. c语言函数除法代码,C语言高效编程与代码优化~

    原标题:C语言高效编程与代码优化~ 译文链接:http://www.codeceo.com/article/c-high-performance-coding.html 英文原文:https://ww ...

  4. 汇编语言---乘法指令及符号扩展

    汇编语言---有符号数乘法指令 介绍 格式及功能介绍 无符号数乘法指令 有符号数乘法指令 符号扩展及符号扩展语句 符号扩展 符号扩展语句 例子 无符号相乘 有符号数相乘 这是本文的重点: 有符号数相乘 ...

  5. 学习笔记(符号扩展指令:SXTB和SXTH)

    前言 这些笔记主要是记录自己在学习CM3汇编中的一些问题(因为我们老师上stm32的嵌入式课是从基础汇编开始讲的,CM3汇编在网上能查到的例子讲解有点少,哭!),其中可能借鉴过网上一些大佬的文章,如果 ...

  6. 汇编语言符号扩展指令及应用示例

    1. 什么是符号扩展?为什么要用符号扩展? 所谓符号扩展,就是将数据的表示大小加倍,数值仍保持不变,即将符号位扩展到同样大小的寄存器空间中去,由两部分构成一个比原值表示大一倍的数.正数必须要0扩展,负 ...

  7. c语言无符号扩展,深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断...

    开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...

  8. 【最新】国际绝对音名标准频率及音符长度C语言宏定义(32位无符号整型精度、十二等律体系、A4=440.00000Hz)

    [最新]国际绝对音名标准频率及音符长度C语言宏定义(32位无符号整型精度.十二等律体系.A4=440.00000Hz) #ifndef __MUSIC_NOTE_H__ #define __MUSIC ...

  9. 基于Python的国际绝对音名标准频率C语言宏定义(32位无符号整型精度、十二等律体系、A4=440.01000Hz)

    基于Python的国际绝对音名标准频率C语言宏定义(32位无符号整型精度.十二等律体系.A4=440.01000Hz) 代码如下: f = open('./PITCH.h', 'w') C=44001 ...

最新文章

  1. Go Web 开发(一)
  2. convert-----Linux中的图片处理工具
  3. 经典C语言程序100例之六七
  4. 双指针 - 长按键入
  5. Redis的哨兵机制 或者心跳机制 模式 原理详解
  6. Weights and Measures(贪心+动态规划)
  7. Linux iptables 配置详解
  8. axis2 webservice入门学识(JS,Java,PHP调用实例源码)
  9. Windows环境 下载、安装、使用 RabbitMQ_(入门试炼_第1篇)
  10. idea导入项目无法通过tomcat插件无法运行记录
  11. Phaser Matter Collision Plugin 碰撞插件 -- iFiero技术分享
  12. map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
  13. 推荐一个准确率99.9%的离线IP地址定位服务!
  14. HotPDF Delphi PDF1.7,上传和编辑所有类型的PDF文件
  15. cmd格式化(重置)磁盘/U盘的操作流程
  16. 关于传说中的AMD5600G 发热少,功耗低
  17. Web前端工程师知识脉络图
  18. 计算机考试多少个小时,考驾照科一电脑刷几个小时
  19. 开源的容器虚拟化平台Docker学习笔记,个人私藏分享,不谢!
  20. 局域网通信软件MTalk

热门文章

  1. 数据恢复 - ORA-600 18018错误的重现和修复
  2. 教你从零搭建Web漏洞靶场OWASP Benchmark
  3. 一文抽丝剥茧带你掌握复杂Gremlin查询的调试方法
  4. 亲测三遍!8步搭建一个属于自己的网站
  5. 【华为云技术分享】GitHub联合开发
  6. 补习系列(19)-springboot JPA + PostGreSQL
  7. 网络计算机的分类包括哪些,计算机的分类有哪些
  8. Android TextView滚动的两种方案
  9. C++ STL容器vector篇(一) vector容器存放内置和自定义数据类型并遍历
  10. leetCode-995:K 连续位的最小翻转次数