代码里char c;这样的定义很少有人会留意,可就是这么个简单的定义却有很大的隐患。所有C原始类型中,char比较特殊,其他如long, int, short都默认有符号,相当于signed long, signed int和signed short,只有“char”不确定。某些编译器默认char是有符号的signed char,有些又当作unsigned char处理。例如ARM编译器ADS中,有编译选项(plain char is signed),选定此选项,ADS就把char当作signed char,不选定就默认unsigned char。不同的编译器选项会导致某些程序运行结果完全不同。

比如:

char c = -1;

if(c>=0)    ......

考虑下,如果编译器把char c认为是signed char c,那c = -1没问题。但如果是unsigned char c,那c = -1赋值后,c实际等于多少?c>=0是否成立呢?

所以直接用char而不明确指明signed和unsigned是危险的,可能因有符号和无符号的“意外”转换而发生错误。保险做法是用typedef定义新类型,明确指明符号,如:  #typedef   unsigned char  u8          #typedef   signed char     s8   。然后程序中不直接用char,而用明确制定signed和unsigned的新类型来定义变量,这就消除了char的默认符号带来的问题。

C陷阱篇之char的默认符号相关推荐

  1. KEIL 默认 char 是无符号的

    在 keil 中, 默认 char 是无符号的,但是也可以配置为有符号的. 打开Options → C/C++标签页,可以看到Plain Char is Signed默认没有勾选.即 默认 char ...

  2. CCIE-LAB-第十六篇-NAT+OSPF下发默认路由+校验配置(模块一结束篇章)

    CCIE-LAB-第十六篇-NAT+OSPF下发默认路由+校验配置(模块一结束篇章) 实际中,思科只会给你5个小时去做下面的全部配置 这个是CCIE-LAB的拓扑图 问题 翻译: 根据这些要求1为FA ...

  3. ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转

    ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转 by 李远祥 上一章节主要是从实战中使用规则和几何效果,如何分解制图规则.本章主要还是通过一些特殊要求如河流线宽渐变和符号 ...

  4. 一起学JAVA之【基础篇】4种默认线程池介绍

    一起学JAVA之[基础篇]4种默认线程池介绍 默认线程池创建方式 java.util.concurrent 提供了一个创建线程池的工具类Executors,里面有四种常用的线程池创建方法 public ...

  5. KEIL 设置char为无符号

    1. 在编译的时候发现keil给出如下警告 warning: #186-D: pointless comparison of unsigned integer with zero 2. 原因keil认 ...

  6. 不同编译器中,char的默认类型是signed char还是unsigned char它们遵循的原则是什么?

    不同编译器中,char的默认类型是signed char还是unsigned char它们遵循的原则是什么?

  7. C语言中char类型的符号问题

    在 C 语言中,char 类型同样分无符号和有符号两种,默认是有符号,前面加 unsigned,则表示无符号.         平时多在字符串处理中使用 char 类型,并默认使用有符号,这样用基本没 ...

  8. 无符号int、有符号int、无符号char、有符号char范围

    计算机以二进制补码存储数值,当一个具有符号位的数据值储存在计算机中的时候,计算机会以最高位为符号位,其余位数取该数绝对值的二进制补码来储存. 有符号char范围: 有符号char最大值(正数):011 ...

  9. MFC开发IM-第七篇、mfc设置默认编辑框内容

    mfc设置默认编辑框内容 原创 2012年04月29日 20:38:04 标签: mfc 9836 为了避免重复输入内容,可以在编辑框中设置默认信息 在OnInitDialog()函数中添加代码: 方 ...

最新文章

  1. 演示 wxPreferencesEditor 使用的示例
  2. 事理图谱概念辨析及其与风险标签分类结合的应用探讨
  3. csdn博客搭建自定义模块
  4. [GIT] warning: LF will be replaced by CRLF问题解决方法
  5. Hobo 4: Total War
  6. You have tried to change the API from what has been previously approved
  7. UI基础UIView常见属性及方法
  8. ASP.NET MVC的帮助类HtmlHelper和UrlHelper
  9. 侧信道攻击之模板攻击
  10. 关于交换机端口的Trunk和Access模式的分析与验证
  11. 来聊聊我的阿里云P7面试经历
  12. 南方科技大学21年计算机考研情况 不保护一志愿?心比天高,德比纸薄?
  13. python的easyocr图像文字识别
  14. neo4j springboot 日志_springBoot 与neo4j的简单整合示例
  15. Linux安装redis及使用
  16. 流程图设计(html+css+js)
  17. 怎样选择合适的ADC芯片
  18. 160多个android开源代码汇总
  19. exp和expdp的filesize参数的使用--导出多个文件
  20. 检测电路故障c语言,常见的几种电路故障

热门文章

  1. 大神李沐被曝离职,投身大模型创业!网友:希望不要耽误他解读论文
  2. AMD提出的补丁使退出延迟降低21%左右
  3. WORD如何互相复制样式?
  4. 个人理财类书籍推荐 -- From一亩三分地 帖子
  5. java面试项目中遇到难题,大量教程
  6. 你在日常的测试工作中遇到过哪些困境呢?
  7. linux 注销用户命令,Linux如何注销其他用户?
  8. 如何注册域名,获取个人网站网址
  9. 苹果在高端手机市场碾压安卓手机,国产旗舰不入前十
  10. windows系统无法保存文件的解决方案