我希望 和都endptr
指向相同的值。然而它们不同。我怀疑是不正确的。OTOH,这可能是规格不明确且任一结果都可接受的情况。strtod()
strtold()
strtold()
这是一个错误(以及使用哪个函数)还是未定义/未指定的行为?
使用:gcc\x86_64-pc-cygwin\4.8.3
#include <math.h>
#include <stdio.h>
// Edit - This include is in my true code, but was missing in original post
#include <stdlib.h>
int main(void) {
char *s = "123ez";
char *endptr;
double d = strtod(s, &endptr);
printf(" double %f '%s'\n", d, endptr);
long double ld = strtold(s, &endptr);
printf("long double %Lf '%s'\n", ld, endptr);
return 0;
}
Output:
double 123.000000 'ez'
long double 123.000000 'z'
[编辑]
gcc 命令gcc -I"C:\cygwin64\lib\gcc\x86_64-pc-cygwin\4.8.3\include" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"string_fp.d" -MT"string_fp.d" -o "string_fp.o" "../string_fp.c"
GCC 4.9.2