C陷阱篇之char的默认符号
代码里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的默认符号相关推荐
- KEIL 默认 char 是无符号的
在 keil 中, 默认 char 是无符号的,但是也可以配置为有符号的. 打开Options → C/C++标签页,可以看到Plain Char is Signed默认没有勾选.即 默认 char ...
- CCIE-LAB-第十六篇-NAT+OSPF下发默认路由+校验配置(模块一结束篇章)
CCIE-LAB-第十六篇-NAT+OSPF下发默认路由+校验配置(模块一结束篇章) 实际中,思科只会给你5个小时去做下面的全部配置 这个是CCIE-LAB的拓扑图 问题 翻译: 根据这些要求1为FA ...
- ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转
ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转 by 李远祥 上一章节主要是从实战中使用规则和几何效果,如何分解制图规则.本章主要还是通过一些特殊要求如河流线宽渐变和符号 ...
- 一起学JAVA之【基础篇】4种默认线程池介绍
一起学JAVA之[基础篇]4种默认线程池介绍 默认线程池创建方式 java.util.concurrent 提供了一个创建线程池的工具类Executors,里面有四种常用的线程池创建方法 public ...
- KEIL 设置char为无符号
1. 在编译的时候发现keil给出如下警告 warning: #186-D: pointless comparison of unsigned integer with zero 2. 原因keil认 ...
- 不同编译器中,char的默认类型是signed char还是unsigned char它们遵循的原则是什么?
不同编译器中,char的默认类型是signed char还是unsigned char它们遵循的原则是什么?
- C语言中char类型的符号问题
在 C 语言中,char 类型同样分无符号和有符号两种,默认是有符号,前面加 unsigned,则表示无符号. 平时多在字符串处理中使用 char 类型,并默认使用有符号,这样用基本没 ...
- 无符号int、有符号int、无符号char、有符号char范围
计算机以二进制补码存储数值,当一个具有符号位的数据值储存在计算机中的时候,计算机会以最高位为符号位,其余位数取该数绝对值的二进制补码来储存. 有符号char范围: 有符号char最大值(正数):011 ...
- MFC开发IM-第七篇、mfc设置默认编辑框内容
mfc设置默认编辑框内容 原创 2012年04月29日 20:38:04 标签: mfc 9836 为了避免重复输入内容,可以在编辑框中设置默认信息 在OnInitDialog()函数中添加代码: 方 ...
最新文章
- 演示 wxPreferencesEditor 使用的示例
- 事理图谱概念辨析及其与风险标签分类结合的应用探讨
- csdn博客搭建自定义模块
- [GIT] warning: LF will be replaced by CRLF问题解决方法
- Hobo 4: Total War
- You have tried to change the API from what has been previously approved
- UI基础UIView常见属性及方法
- ASP.NET MVC的帮助类HtmlHelper和UrlHelper
- 侧信道攻击之模板攻击
- 关于交换机端口的Trunk和Access模式的分析与验证
- 来聊聊我的阿里云P7面试经历
- 南方科技大学21年计算机考研情况 不保护一志愿?心比天高,德比纸薄?
- python的easyocr图像文字识别
- neo4j springboot 日志_springBoot 与neo4j的简单整合示例
- Linux安装redis及使用
- 流程图设计(html+css+js)
- 怎样选择合适的ADC芯片
- 160多个android开源代码汇总
- exp和expdp的filesize参数的使用--导出多个文件
- 检测电路故障c语言,常见的几种电路故障