ACM编程中容易被忽视的地方

1、strlen()
if( fabs( strlen(a) - strlen(b) ) < 5 )
由于 strlen() 返回的是 unsigned 类型,是没有负数的。而如果a的长度小于b的长度,相减的结果应该是负数,在unsigned下就会变成一个很大的正数,出现错误。例如:
	char s1[] = "China", s2[] = "America";
	cout << strlen(s1) - strlen(s2) << endl;
输出的结果就是 4294967294。

你可能感兴趣的:(ACM编程中容易被忽视的地方)