unsigned signed类型区分很重要
来源:互联网 发布:小店收快递软件 编辑:程序博客网 时间:2024/05/21 10:09
也许,我们写起代码来随手就是定义一个int 或者char型的数据。
我们有没有想过这个数据到底是有符号还是无符号呢,它到底需要一个符号吗,会溢出吗?
比如最简单的两行代码
char ch = 0x90;
printf("%02x", ch);
你期待什么输出结果, 是90吗?
但是结果可能不是你想的
得出结果是ffffff90,到底是为什么呢?
char型在我的平台上默认是signed char,也就是有符号的, 那么0x90就表示一个负值了,也就是-0x70
那么这个值,用“%02x” 打印出来是多少呢
就是ffffff90(注意计算机中用补码表示)。
这显然不是我们需要的。
当以unsigned char ch = 0x90;
结果就同我们预期的一样了。
今天想把linux下的正文段打出来看一下,结果就做了个从0x80480000开始的打印程序,结果并不是每行输出32个字节(
我的程序中是以“%02x”打印的,循环32次)
所以,以后在写代码的时候,一定要注意,类型太重要了,看似没问题,其实到处是问题。
好像看过一本书上讲,看一个人的代码写的怎么样,就看看他会不会在变量前注明变量符号,会不会在有的参数
前加上必要的const。这是后话了。
- unsigned signed类型区分很重要
- signed与unsigned类型相加
- (C语言)signed和unsigned类型转化
- char类型默认是signed还是unsigned?
- [C++] unsigned和signed类型不要混用
- signed & unsigned.
- signed unsigned
- unsigned signed
- signed & unsigned
- C语言 unsigned 和 signed 类型相互转换深入理解
- C语言 unsigned 和 signed 类型相互转换深入理解
- 语言 unsigned 和 signed 类型相互转换深入理解
- C语言 unsigned 和 signed 类型相互转换深入理解
- C语言中,unsigned与signed类型转换
- C语言 unsigned 和 signed 类型相互转换深入理解
- C语言 unsigned 和 signed 类型相互转换深入理解
- C语言 unsigned 和 signed 类型相互转换深入理解
- unsigned/signed int/char类型表示的数值范围
- Java编程:常见问题汇总
- Object information--CLASS
- MFC最小化到系统托盘
- java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
- 系统加上<html:base />好处!
- unsigned signed类型区分很重要
- HCI_USB 调用
- Android 通过xml创建菜单
- Eclipse快捷键
- 定义类1
- LDAP 添加用户信息
- 文件读写和注册表读写
- Linux 文件系统类型 文件系统结构 与Windows文件系统的比较
- FindBugs:Eclipse插件 用法