vs2015编译错误解决:error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型

使用vs2015编译代码时报错:

error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型

 

原因: 
由于编译器SDL安全检查认为这一操作(通常是为无符号整形取负的操作)无效而产生的。

这里我们假设定义一个数值为int INT,在32位机上面取值范围是-2147483648~+2147483647, 
INT变量在后面会取负,比如Temp = -INT, 
编译器认为INT有可能大于2147483647,那么会将INT优化为unsigned int类型, 
SDL就可能认为我们的INT有可能取负了之后还是一样的,毕竟是unsigned 类型,因此提示错误。

 

解决方法: 
右键项目名称->属性->C/C++->常规:SDL检查,选择否。

vs2015编译错误解决:error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型