客服说我昵称违规 2022-02-06 16:55 采纳率: 0%
浏览 23

C语言 关于0到1区间属于bool类型的true还是false?

问题遇到的现象和发生背景

最近在做牛客网的华为机试题,遇到了个白丝不得姐的问题,该题目可搜索:HJ14 字符串排序

问题相关代码,请勿粘贴截图

if(strcmp(str[j],str[j+1])>0) //这样写是对的
if(strcmp(str[j],str[j+1])) //这样写是错误的

我的解答思路和尝试过的方法

以下是strcmp相关的:
extern int strcmp(const char *s1,const char *s2);
规则
当s1<s2时,返回为负数;
当s1=s2时,返回值= 0;
当s1>s2时,返回正数。

if语句的判定条件非0即为真
问题就这么出现了:当s1>s2时,返回正数,即返回值>0,if判定应该为真啊.
可是if(strcmp(str[j],str[j+1])) 就是错误的

是我对概念理解错误了?
还是由于编译环境的原因出现的问题呢?
求姐

  • 写回答

3条回答 默认 最新

  • 关注

    0就是false,其他都是true。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月6日