c++的整型
2018-03-11 22:36
99 查看
c++有五种整型类型,char、short、int、long、long long,每种都有signed(有符号,默认)、unsigned(无符号)两种分类,一共为10种类型
在c++的实现中,每一种类型在不同系统上使用的存储位数(宽度)是不同的,其规则为:
short至少16位
int至少与short一样长
long至少32位,且至少与int一样长
long long至少64位,且至少与long一样长
不得不说是个蛋疼的规则
c++实现将类型的相关数据都存储在了limits.h头文件中,下面是win10系统中vs2017的实现:
long long:
long:
int:
a1ae
节
short:
char类型比较特殊,默认的char是有符号还是无符号类型完全取决于实现,所以
在c++的实现中,每一种类型在不同系统上使用的存储位数(宽度)是不同的,其规则为:
short至少16位
int至少与short一样长
long至少32位,且至少与int一样长
long long至少64位,且至少与long一样长
不得不说是个蛋疼的规则
c++实现将类型的相关数据都存储在了limits.h头文件中,下面是win10系统中vs2017的实现:
#define CHAR_BIT 8 // number of bits in a char #define SCHAR_MIN (-128) // minimum signed char value #define SCHAR_MAX 127 // maximum signed char value #define UCHAR_MAX 0xff // maximum unsigned char value #ifndef _CHAR_UNSIGNED #define CHAR_MIN SCHAR_MIN // mimimum char value #define CHAR_MAX SCHAR_MAX // maximum char value #else #define CHAR_MIN 0 #define CHAR_MAX UCHAR_MAX #endif #define MB_LEN_MAX 5 // max. # bytes in multibyte char #define SHRT_MIN (-32768) // minimum (signed) short value #define SHRT_MAX 32767 // maximum (signed) short value #define USHRT_MAX 0xffff // maximum unsigned short value #define INT_MIN (-2147483647 - 1) // minimum (signed) int value #define INT_MAX 2147483647 // maximum (signed) int value #define UINT_MAX 0xffffffff // maximum unsigned int value #define LONG_MIN (-2147483647L - 1) // minimum (signed) long value #define LONG_MAX 2147483647L // maximum (signed) long value #define ULONG_MAX 0xffffffffUL // maximum unsigned long value #define LLONG_MAX 9223372036854775807i64 // maximum signed long long int value #define LLONG_MIN (-9223372036854775807i64 - 1) // minimum signed long long int value #define ULLONG_MAX 0xffffffffffffffffui64 // maximum unsigned long long int value
long long:
#include "iostream" #include "climits" int main() { std::cout << "signed long long类型的宽度为:" << sizeof (signed long long) << std::endl; std::cout << "unsigned long long类型的宽度为:" << sizeof (unsigned long long) << std::endl; std::cout << "signed long long类型的最大值为:" << LLONG_MAX << std::endl; std::cout << "signed long long类型的最小值为:" << LLONG_MIN<<std::endl; std::cout << "unsigned long long类型的最大值为:" << ULLONG_MAX<<std::endl; return 0; }输出:
signed long long类型的宽度为:8 unsigned long long类型的宽度为:8 signed long long类型的最大值为:9223372036854775807 signed long long类型的最小值为:-9223372036854775808 unsigned long long类型的最大值为:18446744073709551615可以看到long long类型由8个字节存储,严格来说宽度为64位,无符号类型的最大值就是2的64次方减1
long:
#include "iostream" #include "climits" int main() { std::cout << "signed long类型的宽度为:" << sizeof (signed long) << std::endl; std::cout << "unsigned long类型的宽度为:" << sizeof (unsigned long) << std::endl; std::cout << "signed long类型的最大值为:" << LONG_MAX << std::endl; std::cout << "signed long类型的最小值为:" << LONG_MIN<<std::endl; std::cout << "unsigned long类型的最大值为:" << ULONG_MAX<<std::endl; return 0; }输出:
signed long类型的宽度为:4 unsigned long类型的宽度为:4 signed long类型的最大值为:2147483647 signed long类型的最小值为:-2147483648 unsigned long类型的最大值为:4294967295可以看到long使用4个字节存储,即32位数字
int:
#include "iostream" #include "climits" int main() { std::cout << "signed int类型的宽度为:" << sizeof (signed int) << std::endl; std::cout << "unsigned int类型的宽度为:" << sizeof (unsigned int) << std::endl; std::cout << "signed int类型的最大值为:" << INT_MAX << std::endl; std::cout << "signed int类型的最小值为:" << INT_MIN<<std::endl; std::cout << "unsigned int类型的最大值为:" << UINT_MAX<<std::endl; return 0; }输出:
signed int类型的宽度为:4 unsigned int类型的宽度为:4 signed int类型的最大值为:2147483647 signed int类型的最小值为:-2147483648 unsigned int类型的最大值为:4294967295在win10中long与int类型都是存储为4个字
a1ae
节
short:
#include "iostream" #include "climits" short main() { std::cout << "signed short类型的宽度为:" << sizeof (signed short) << std::endl; std::cout << "unsigned short类型的宽度为:" << sizeof (unsigned short) << std::endl; std::cout << "signed short类型的最大值为:" << SHRT_MAX << std::endl; std::cout << "signed short类型的最小值为:" << SHRT_MIN<<std::endl; std::cout << "unsigned short类型的最大值为:" << USHRT_MAX<<std::endl; return 0; }输出:
signed short类型的宽度为:2 unsigned short类型的宽度为:2 signed short类型的最大值为:32767 signed short类型的最小值为:-32768 unsigned short类型的最大值为:65535short类型使用2字节存储,即16个二进制位
char类型比较特殊,默认的char是有符号还是无符号类型完全取决于实现,所以
#define CHAR_BIT 8 // number of bits in a char #define SCHAR_MIN (-128) // minimum signed char value #define SCHAR_MAX 127 // maximum signed char value #define UCHAR_MAX 0xff // maximum unsigned char value #ifndef _CHAR_UNSIGNED #define CHAR_MIN SCHAR_MIN // mimimum char value #define CHAR_MAX SCHAR_MAX // maximum char value #else #define CHAR_MIN 0 #define CHAR_MAX UCHAR_MAX #endif这里将CHAR、SCHAR、UCHAR分为三类来定义常量,其中无符号char(UCHAR)、有符号char(SCHAR)的范围都是固定的,而char的范围要根据_CHAR_UNSIGNED常量来决定
相关文章推荐
- C++ 64位整型的跨平台处理
- 无符号变量转有符号变量 && C++整型赋值越界处理(VC++)
- C/C++的64位整型
- C++:数据类型和表达式<1>无符号和有符号整型
- C++中静态变量、常量、静态整型常量、静态非整型常量、引用变量的初始化方法
- C++ 整型和字符串相互转换(转载)
- C++中的整型数据和浮点型数据的属性
- PHP与C++通信,发送整型数据。
- C++基础---整型
- XX大型游戏公司笔试题之一 【 C++(揭秘很牛XX游戏公司的现 笔试题)整型随机数组奇偶排序(奇数从小到大,偶数从大到小)冒泡排序】
- C++中整型类型转换成字符串类型
- long long C/C++的64位整型 不同编译器间的比较
- 整型映射和类型映射(节选自《Modern C++ Design》)
- C/C++的64位整型
- C++中字符串与整型浮点型间的转换
- C++:数据类型和表达式<1>无符号和有符号整型
- [原创]c++整型提升(类型转换)
- C/C++下将一个十六进制的字符串型的数字转换成整型数字.
- C++ 长整型数据的输出
- C++中字符串与整型,浮点型间的转换