第3章 处理数据
C++ climits 中的符号常量
符号常量 | 表示 | 值 |
---|---|---|
CHAR_BIT | char 的位数 | 8 |
CHAR_MAX | char 的最大值 | 127 |
CHAR_MIN | char 的最小值 | -128 |
SCHAR_MAX | signed char 的最大值 | 127 |
SCHAR_MIN | signed char 的最小值 | -128 |
UCHAR_MAX | unsigned char 的最大值 | 255 |
SHRT_MAX | short 的最大值 | 32767 |
SHRT_MIN | short 的最小值 | -32768 |
USHRT_MAX | unsigned short 的最大值 | 65535 |
INT_MAX | int 的最大值 | 2147483647 |
INT_MIN | int 的最小值 | -2147483648 |
UNIT_MAX | unsigned int 的最大值 | 4294967295 |
LONG_MAX | long 的最大值 | 2147483647 |
LONG_MIN | long 的最小值 | -2147483648 |
LONG_MAX | unsigned long 的最大值 | 4294967295 |
LLONG_MAX | long long 的最大值 | 9223372036854775807 |
LLONG_MAX | long long 的最小值 | -9223372036854775808 |
ULLONG_MAX | unsigned long 的最大值 | 18446744073709551615 |
整数的取值限制
将一个short(sam)变量和一个unsigned short(sue)变量分别设置为最大的short值(32767)。然后将这些变量的值都加1。这对于sue来说没有什么问题,因为新值仍比无符号整数的最大值小得多;但sam的值从32767变成了-32768。同样,对于sam,将其设置为0并减去1,也不会有问题;但对无符号变量sue,将其设置为0并减去1后,它变成了65535.
由上文可得出,这些整型变量的值如果超越了限制,其值将为范围另一段的取值(详见下图)
使用大括号初始化器进行数据初始化
例:int emus{7}; // set emus to 5
int rheas = {12}; // set rheas to 12
※ int rocs{}; // set rocs to 0 (空值默认赋0)
利用cout的特性输出八进制和十六进制数:
除了endl控制符,我们还可以使用头文件iostream中的dec、hex、oct控制符用于指示cout以十进制、十六进制、八进制格式显示整数。
// hexoct2.cpp -- display values in hex and octal
#include <iostream>
using namespace std;
int main()
{
using namespace std;
int chest = 42;
int waist = 42;
int inseam = 42;
cout << "Monsieur cuts a striking figure!" << endl;
cout << "chest = " << chest << " (decimal for 42)" << endl;
cout << hex; // manipulator for changing number base
cout << "waist = " << waist << " (hexadecimal for 42)" << endl;
cout << oct; // manipulator for changing number base
cout << "inseam = " << inseam << " (octal for 42)" << endl;
return 0;
}
输出结果: