关于vs中,int类型变量无法取值为-2,147,483,648

int 4字节 32bit 
sign int 取值范围-2,147,483,6482,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。

 

 

 

posted @ 2020-10-30 13:42  zeroPatrick  阅读(565)  评论(0编辑  收藏  举报