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

使用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呢?

  • 写回答

3条回答 默认 最新

  • ball球 2020-12-29 11:03
    关注

    strlen(t)返回的是unsigned int, 这个类型在和int比大小时,int被转成了unsigned int。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料