sizet是什么类型:size_t 的陷阱

size_t是无符号整形,平常用的时候没有觉得有什么问题,但是今天的一个程序怎么弄就是不对,反复检查逻辑错误并没有发现有什么错误,而且程序本身逻辑并不复杂,搞得我头很大。后来经过一番探索,终于发现其错误发生在size_t上。废话不多说,直接给代码。

  1. #include<iostream>
  2. usingnamespacestd;
  3. intmain(){
  4. size_tt=1;
  5. intz=-1;
  6. if(z<t){
  7. cout<<"i'min"<<endl;
  8. }
  9. cin.get();
  10. }

t是size_t类型的,按照道理说这个if条件判断肯定是能进去的,但是因为size_t类型是无符号,int型是有符号,结果就很妖怪的没有进入if里面。结果你会发现,编译器把有符号的z转换成了无符号的z,也就变成了4294967295,这样一来if条件能判断为true才怪!

Tags:  误入陷阱的小茉莉 最致命的陷阱 现代化的陷阱 sizet是什么类型

延伸阅读

最新评论

发表评论