c++关于signed和unsigned
2010-08-12 09:19
295 查看
c plus fifth 上的一个demonstration概要如下:
cout<<"SHRT_MAX="<<SHRT_MAX<<endl;
short num1=SHRT_MAX;
unsigned short num2=num1;
cout<<++num1<<endl;
cout<<++num2<<endl;
num1=num2=0;
cout<<--num1<<endl;
cout<<--num2<<endl;
输出是:
SHRT_MAX=32767
num1=-32768
num2=32768
num1=-1
num2=65535
解释是:These integer like an odometer.If it go pass the limits the value just starts over at the other end of the range.
也就是说这类数的定义就像是是将数据排在一个环上 当数据达到最大时再加一它将变成该类型的最小值。
这一解释的依据是c++的数据类型转换原理
实际上是二进制的进位循环 当short达到最大时即两个字节也就是二的15次方一个0十五个一再进一位就成了 一个一十五个0 了即瘦肉汤类的最小的负数
cout<<"SHRT_MAX="<<SHRT_MAX<<endl;
short num1=SHRT_MAX;
unsigned short num2=num1;
cout<<++num1<<endl;
cout<<++num2<<endl;
num1=num2=0;
cout<<--num1<<endl;
cout<<--num2<<endl;
输出是:
SHRT_MAX=32767
num1=-32768
num2=32768
num1=-1
num2=65535
解释是:These integer like an odometer.If it go pass the limits the value just starts over at the other end of the range.
也就是说这类数的定义就像是是将数据排在一个环上 当数据达到最大时再加一它将变成该类型的最小值。
这一解释的依据是c++的数据类型转换原理
实际上是二进制的进位循环 当short达到最大时即两个字节也就是二的15次方一个0十五个一再进一位就成了 一个一十五个0 了即瘦肉汤类的最小的负数
相关文章推荐
- Why Not Mix Signed and Unsigned Values in C/C++?
- c++基础类型之signed、unsigned的一个细节
- c++需要注意unsigned与signed区别
- 关于C语言中的unsigned和signed内存存储
- C++ signed和unsigned 大小比较
- 关于unsigned与signed的转换问题
- 关于Unsigned 和 signed 的测试说明
- unsigned vs. signed in C/C++
- C语言中关于char类型存储的分析 以及signed与unsigned的区别
- char, signed char, and unsigned char in C++
- C/C++之char,short ,long,double,float,int, signed, unsigned
- [C++] unsigned和signed类型不要混用
- 关于signed和unsigned的隐秘bug
- NO.3 C++中的signed和unsigned
- 关于signed和unsigned的%d和%u
- 一道关于signed和unsigned的微软面试题
- signed转换至unsigned(关于符号扩展)
- 【C++学习】关于unsigned long long的输出问题
- 关于C++中的explicit关键字
- 关于C++和Objective-C混编