size_t引起的问题

时间:2022-10-06 17:03:49
#include <string.h>

int main(void)
{
    char str[] = "hello";
    if(-1 < strlen(str))
    {
        printf("I guess this line will be print./n");       
    }
    elsle
    {
        printf("UH/n");
    }
   
    return 0;
}

上面的程序输出的是第一个printf还是第二个printf的内容呢?
先看看strlen的声明
size_t strlen( char *str );
对!问题就出在size_t上面,一般而言size_t被typedef为一个无符号数。可以通过查看stddef.h来查看size_t的定义。
通过上面的分析应该很容易看出上面的程序输出的是第二个printf的内容。