这是关于此警告消息的小而清晰的帖子,起初看起来很奇怪。但是仔细观察,其背后的原因非常清楚而直接。涉及到代码移植性。
警告:由于数据类型范围有限,比较始终为假
这是一段简单的代码,当在64位体系结构上运行时,将产生以上警告。
string subject = "A[1]";
string search = "1";
unsigned location = subject.find(search); // location is unsigned
if( location == std::string::npos)
cout << " true";
else
cout << " false";
这里的问题是std::string::npos
return size_t
,它表示当前体系结构上的无符号本机整数大小。
因此,在32位体系结构上: