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条)

报告相同问题?

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助