对无符号整形数的操作
strlen返回一个类型为size_t的值,这个类型在头文件stddef.h中定义,他是一个无符号整数类型。在表达式中操作无符号书可能导致不可预料的结果
if ( strlen(x) >= strlen(y) ...
if ( strlen(x) - strlen(y) >= 0) ...
第一条语句可以按照你的想法去工作,但第2条语句将永远是真,strlen 的结果是无符号书,所以 >= 左边的表达式也将是无符号数,而无符号数 觉不可能使负的。
unsigned int a, b, c;
a = 3;
b = 4;
c = a - b;
printf("%ud",c);
输出 c 为 4294967295.