size_t 的陷阱

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
	size_t t = 1;
	int z = -1;

	/*注意:t是size_t类型的,size_t是unsigned类型,int型是有符号,结果就很妖怪的没有进入if里面。
			结果你会发现,编译器把有符号的z转换成了无符号的z,也就变成了4294967295,这样一来if条件能判断为true才怪!
	*/
	if(z < t) 
	{
		cout << "i'm in" << endl;
	}

	return 0;
}


 

你可能感兴趣的:(陷阱,size_t)