有符号数与无符号数
2016-03-24 20:14
204 查看
编译器的隐式提升
无符号整数和有符号整数在进行比较,或者算数运算的时候,有一些隐蔽的规则* ANSI C 中规定,无符号和有符号一起出现,有符号数会升级为无符号数,-1就会成为一个超大的无符号数字,这类bug较难发现
* sizeof返回值就是个无符号数,用它和一个有符号数判断的时候会出问题
建议
建议是尽量使用有符号数,此时要注意出现无符号数的时候,强制把无符号数字转化为有符号数字进行判断,但是要注意两者的范围并不一致,防止溢出。一定要使用混合有无符号数的时候,每个表达式中都写上强制转换,不要让编译器来判断如何做。
Reference
C专家编程相关文章推荐
- 2016.3.24 OneZero站立会议
- 根据用户需要输出打印菱形,用for循环输出打印星号组成的菱形
- 伪造来源IP欺骗
- SDWebImage内部实现过程
- C# 的时间戳转换
- Windows下80端口被进程System&PID=4占用
- 字符编码笔记:ASCII,Unicode和UTF-8
- VC2013下使用64位libcurl(包含zlib1、ssleay32等)
- if与switch的小区别
- 三目运算、可选类型
- HDU3586 Information Disturbing(树形DP)
- 操作系统实验一、 命令解释程序的编写
- 线段树(多棵) HDOJ 4288 Coder
- 我的ios 开发学习之旅!
- 【HPU】[1735]老王修马路(一)
- linux新手入门学习 - linux目录结构
- hud1875
- ffmpeg 解码流程
- 一个国外博士生Andrews Sobral收集和测试的64个低秩+稀疏矩阵/张量分解的算法库
- [原创]2016年测试岗位招聘感悟