c++需要注意unsigned与signed区别
来源:互联网 发布:手机号码群发短信软件 编辑:程序博客网 时间:2024/05/24 06:41
我在重新梳理谭浩强c++第二版时注意到了一个原来并没有重视的问题。
首先,让我们来看一个简单的c++程序。
#include <iostream>
using namespace std;
int main()
{
unsigned short a;
short int b = -1;
a = b;
cout << a << endl;
return 0;
}
看到这个程序时,我很轻松的下了结论:运行结果为-1;
当然……真实运行结果是这样的
那么问题出在哪里呢?
毫无疑问,就在我们标题所说。
第一点,我们都清楚,修饰符signed代表有符号,也就是说,存储单元的最高位用来表示数值的符号。而unsigned当然与之对应的全部二进制位都用来表示数值本身。
第二点,c++程序中,正数以原码存储,负数以补码存储。(或者说正数的补码与原码相同,即它所代表的数的真值)
然后事情就很清楚了。
b值为-1,也就是原码为1000000000000001,对应补码为1111111111111111.
而当其值赋给a时,unsigned修饰符生效,原本代表符号的“1”现在真的代表了1,并且不再代表负数。
所以,本来说好的补码现在就是原码了。
那也就是说,现在的a值对应的数值原码为1111111111111111.也就是pow(2,15)-1,即65535.
所以,如果将unsigned改为signed,那一切恢复正常,最终结果重新变为-1.
1 0
- c++需要注意unsigned与signed区别
- c++需要注意unsigned与signed区别
- C语言 unsigned与signed区别
- C中signed与unsigned
- C中signed与unsigned
- C - char与signed char, unsigned char的区别
- 计算中unsigned与signed的区别
- C语言之unsigned 与signed
- signed unsigned 的区别
- signed 和 unsigned 区别
- C语言中关于char类型存储的分析 以及signed与unsigned的区别
- signed 与unsigned 理解
- unsigned 与signed
- char与signed char, unsigned char的区别
- char与signed char, unsigned char的区别
- char与signed char, unsigned char的区别
- char与signed char, unsigned char的区别
- char与signed char, unsigned char的区别?
- 安装 CAS 服务器
- VC6.0工程设置说明
- Linux下学习python编程
- 编译原理——中间代码生成
- 《算法导论》实验一:快速排序算法及其优化
- c++需要注意unsigned与signed区别
- 源码分享-验证码识别程序
- color
- Java回炉之反射(二)动态代理
- (RedHat)Linux 开启telnet服务
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- 读书笔记-Android开发艺术探索-第15章-Android性能优化
- Android ListView getView方法和调优 解释
- 计算机图形学知识点复习总结