版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gease_Gg/article/details/83548168
示例代码:
#include <iostream>
using namespace std;
int main(){
int array[]={1,2,3,4,5};
int i=-1;
cout<<sizeof(array)<<endl;
if(i<=sizeof(array))
cout<<"yes";
else
cout<<"no";
return 0;
}
结果:
解释:
sizeof函数返回的值是unsigned类型的,而当unsigned和signed类型的做运算时,signed会被转化成unsigned类型。
而int i=-1;他的内存表示为0xffffffff,当转化成unsigned后,他的值就变成了2
-1,自然就比20要大;
教训
有符合和无符号数混用很危险。尽量减少这种情况,一般使用int类型,如果必须使用unsigned,一定要记得类型转换。