c++中 strcmp短字符串反而比长字符串大
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    cout << strcmp("Java","Basical") <<endl;
    return 0;
}

我在dev c++和菜鸟工具在线编译上的结果都是1?难道4个字符比7个字符还要大吗?还是因为编译器的原因?strcmp不是比较ASCII码吗,可Java4个字符加起来的ASCII码也不会比Basical大啊,怎么会造成这个结果呢。。

c++

2个回答

J比B大。
源码中,比较规则是依次比较,只要字符不等就跳出循环,返回结果

int _cdecl strcmp(const char* src, const char* dst)
{
    int ret = 0;
    while (!(ret = *(unsigned char*)src - *(unsigned char*)dst) && *dst)
        ++src, ++dst;
    if (ret<0)
        ret = -1;
    else if (ret>0)
        ret = 1;
    return ret;
}

比较的是首对不同字符,即比较的是J和B

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问