函数strtol在C中超出范围......或者不是

Mar*_*k E 2 c std strtol

我尝试从带有strtol()的字符串中读取一个数字,并返回LONG_MAX数字,该数字应该在数字超出范围时返回,但我的数字不是那么大

main(){
    char linea[30]={"110111010111111000000000"};
    long num=strtol(linea,NULL,0);
    printf("%s\n%X",linea,num);
}
Run Code Online (Sandbox Code Playgroud)

实际结果:
110111010111111000000000
7FFFFFFF

需要的结果:
110111010111111000000000
DD7C00

小智 5

根据strtol的手册页,你给出的'0'参数意味着'使用你最好的判断',在这种情况下是十进制的.如果您希望它转换二进制数,作为您指定的"需要结果"建议,请不要使用"0",请使用"2".