C++基础(size_t的陷阱) |
|
www.nanhushi.com 佚名 不详 |
size_t是无符号整形,平常用的时候没有觉得有什么问题,但是今天的一个程序怎么弄就是不对,反复检查逻辑错误并没有发现有什么错误,而且程序本身逻辑并不复杂。后来经过一番探索,终于发现其错误发生在size_t上。考试大提示直接给代码。 #include <iostream> using namespace std; int main() { size_t t = 1; int z = -1; if(z < t) { cout << "i'm in" << endl; } cin.get(); } t是size_t类型的,按照道理说这个if条件判断肯定是能进去的,但是因为size_t类型是无符号,int型是有符号,结果就很妖怪的没有进入if里面。结果你会发现,编译器把有符号的z转换成了无符号的z,也就变成了4294967295,这样一来if条件能判断为true才怪!来源:考试大网
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: C++基础(动态内存(初始化和赋值)) 下一篇文章: C++基础(c++潜在作用域) |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|