Therlf
2020-12-29 09:41
采纳率: 100%
浏览 81

使用strlen()返回的长度和int型数字比较结果不正确

问题:

    int b = -1;
    char* t = "ll";
    if(b > strlen(t)){
        printf("Yes");
    }else{
        printf("No");
    }

在运行这段代码的时候,发现b总是大于strlen(t)的,即输出Yes。但是如果把b换成1,那么比较结果就正确了,输出No,即b < a。

我一开始以为是long型和int型的比较问题,因为编译器提醒我long型是%ld,但是打代码发现long型和int型的比较是正确的,那么请问为什么用负数和strlen()返回的数比较总是返回true呢?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题