今天写代码,遇到这样一个问题(把问题简单描述如下):
short iNum = -1;
if(iNum )
{
cout<<"true"<<endl;
}
else
{
cout<<"false"<<endl;
}
结果是:true。
想了一下,考虑应该是跟负数在内存中的存储方式有关:符号为保留,取其补码。
int类型的 -1
(看上去是10000000 00000000 00000000 00000001)
实际上在内存中 11111111 11111111 11111111 11111111
所以,上述代码返回true