size_t是无符号整形,平常用的时候没有觉得有什么问题,但是今天的一个程序怎么弄就是不对,反复检查逻辑错误并没有发现有什么错误,而且程序本身逻辑并不复杂,搞得我头很大。后来经过一番探索,终于发现其错误发生在size_t上。废话不多说,直接给代码。
- #include<iostream>
- usingnamespacestd;
- intmain(){
- size_tt=1;
- intz=-1;
- if(z<t){
- cout<<"i'min"<<endl;
- }
- cin.get();
- }
t是size_t类型的,按照道理说这个if条件判断肯定是能进去的,但是因为size_t类型是无符号,int型是有符号,结果就很妖怪的没有进入if里面。结果你会发现,编译器把有符号的z转换成了无符号的z,也就变成了4294967295,这样一来if条件能判断为true才怪!
最新评论