问题遇到的现象和发生背景
最近在做牛客网的华为机试题,遇到了个白丝不得姐的问题,该题目可搜索: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])) 就是错误的
是我对概念理解错误了?
还是由于编译环境的原因出现的问题呢?
求姐