C++ 中关于有符号类型(singned)和无符号类型(unsigned)
Posted Mars-xq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 中关于有符号类型(singned)和无符号类型(unsigned)相关的知识,希望对你有一定的参考价值。
参考:
C++ 中关于有符号类型(singned)和无符号类型(unsigned)
简介:
1、有符号
类型的数据可以存储负数
,无符号
类型的数据只能存储正数
。
2、针对同一种类型,两者可以存储的数据空间
大小是一样
的,只是数据范围不一样
。
以 short
类型为例,
unsigned short
存储的范围是 0~65535
,
signed short
存储的范围是 -32768~32767
,
两种类型的数据可以存储 65536
个数据。
在C++中,如果某种类型的取值超过
该类型本身限定的范围(溢出),则其值将从范围的另一端取值
。
demo:
#include <iostream>
#include <climits>
using std::cin;
using std::cout;
using std::endl;
int main() {
//有符号 : 可以存储正负数
cout << "int: 【 " << INT_MIN << " , " << INT_MAX << "】" << endl;
cout << "int8: 【 " << INT8_MIN << " , " << INT8_MAX << "】" << endl;
cout << "int16: 【 " << INT16_MIN << " , " << INT16_MAX << "】" << endl;
cout << "int32: 【 " << INT32_MIN << " , " << INT32_MAX << "】" << endl;
cout << "int64: 【 " << INT64_MIN << " , " << INT64_MAX << "】" << endl << endl;
//int: 【 -2147483648 , 2147483647】
//int8: 【 -128 , 127】
//int16: 【 -32768 , 32767】
//int32: 【 -2147483648 , 2147483647】
//int64: 【 -9223372036854775808 , 9223372036854775807】
//无符号:只可以存储正数
cout << "uint: 【 " << 0 << " , " << UINT_MAX << "】" << endl;
cout << "uint8: 【 " << 0 << " , " << UINT8_MAX << "】" << endl;
cout << "uint16: 【 " << 0 << " , " << UINT16_MAX << "】" << endl;
cout << "uint32: 【 " << 0 << " , " << UINT32_MAX << "】" << endl;
cout << "uint64: 【 " << 0 << " , " << UINT64_MAX << "】" << endl << endl;
//uint: 【 0 , 4294967295】
//uint8: 【 0 , 255】
//uint16: 【 0 , 65535】
//uint32: 【 0 , 4294967295】
//uint64: 【 0 , 18446744073709551615】
//在C++中,如果某种类型的取值超过该类型本身限定的范围(溢出),则其值将从范围的另一端取值。
cout << "char: 【 " << CHAR_MIN << " , " << CHAR_MAX << "】" << endl;
cout << "uchar: 【 " << 0 << " , " << UCHAR_MAX << "】" << endl << endl;
//char: 【 -128 , 127】
//uchar: 【 0 , 255】
cout << "short: 【 " << SHRT_MIN << " , " << SHRT_MAX << "】" << endl;
cout << "ushort: 【 " << 0 << " , " << USHRT_MAX << "】" << endl;
signed short one = SHRT_MAX;
unsigned short two = SHRT_MAX;
cout << "original: " << endl;
cout << "one : " << one << " two: " << two << endl << endl;
cout << "additon: " << endl;
one += 1;
two += 1;
cout << "one : " << one << " two: " << two << endl << endl;
//short: 【 -32768 , 32767】
//ushort: 【 0 , 65535】
//original:
//one : 32767 two: 32767
//
//additon:
//one : -32768 two: 32768
return 0;
}
以上是关于C++ 中关于有符号类型(singned)和无符号类型(unsigned)的主要内容,如果未能解决你的问题,请参考以下文章