INT_MIN是C/C++语言头文件limits.h中的一个符号常量
介绍int的范围及原因
int的数值用补码表示,正数是从0000000000~01111111111111111,即0~2147483647;负数是从1000000000~ 11111111111111111,即-2147483648~-1补码的第一位代表符号,0为正,1为负且为了使0的表示具有唯一性,就用0000000000代表0,即0=0+。这也就导致了负数的最大绝对值比正数的大1
INT_MIN在limits.h中的表示
在limits.h中,定义了常量INT_MAX 为2147483647,而在C/C++中,负数的创建是由正数取反得到的,因此不能定义INT_MIN为-2147483648,只能定义为表达式(-INT_MAX-1)
2.max函数
头文件
#include<algorithm>
功能
输入
int a=1,b=2; int x=max(a,b); cout<<x;
输出
2
max可以进行比较并返回最大值,但是!上机后发现,对于4个输入来说,如max(a,b,c,d),系统会报错。max函数只能比较2个数据的大小,min函数也是如此。cplusplus官网定义如下:
头文件
#include<numeric>
用法
accumulate是累积函数,在c++中有两个定义
总和 (1) template <class InputIterator, class T> T accumulate (InputIterator first, InputIterator last, T init); 自定义 (2) template <class InputIterator, class T, class BinaryOperation> T accumulate (InputIterator first, InputIterator last, T init, BinaryOperation binary_op);
默认操作是将元素相加,但可以将其他操作指定为自定义操作
“加“操作
加操作是对于一组数据来说的,因此要有数据的起始和终止指针,另外,初始值一定要给出,没有默认初始值!
accumulate(vec.begin() , vec.end() , 初始值);
”自定义“操作
accumulate(vec.begin() , vec.end() , 初始值,manner);
这种情况下,默认的加法就会变成自定义的manner