#include "stdio.h"
int main(void){
printf("%ld\n", strtol("99999999999999999999999"));
return 0;
} # 0
#include "stdio.h"
//#include "stdlib.h"
int main(void){
char *end[500];
printf("%ld\n", strtol("99999999999999999999999", end, 10));
return 0;
} # 9223372036854775807
用 gcc 和 clang 结果一样。 按照 POSIX 标准,(如果我没理解错) 应该是
- 将错误的字符串写入 endptr
- 设置 ERANGE
- 返回 LONG_MAX。