关于vs中,int类型变量无法取值为-2,147,483,648
int 4字节 32bit sign int 取值范围-2,147,483,648 到 2,147,483,647 但是 int m = -2,147,483,648 是错误的,报错:(error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型),
因为2,147,483,648大于sign int型的最大值2,147,483,647,所以被系统判别为无符号型int,此时便与2,147,483,648前面
的负号冲突,然后报错。 应当写为 int m = -2,147,483,647 - 1 int m = 2,147,483,647 则不报错。
解决方法:
1.
#define INT_MIN (-2147483647 - 1) // minimum (signed) int value
2.
如果是int,可以用INT_MAX表示正无穷,INT_MIN表示负无穷,需要包含limits.h。
如果是double,可以用DBL_MAX表示正无穷,-DBL_MAX表示负无穷(注意不是DBL_MIN),需要包含float.h。