#include #include #include #define __STDC_WANT_DEC_FP__ #define __STDC_VERSION__ 201112L #include int main(int argc, char **argv) { float flt; double dbl; if( argc != 2 ) { fprintf(stderr, "usage: nextfloat \n"); return 1; } flt= strtof(argv[1], NULL); dbl= strtod(argv[1], NULL); printf("single precision:\nargument == %.*g\n", FLT_DECIMAL_DIG, (double)flt); ++*(int32_t*)&flt; printf("next == %.*g\n", FLT_DECIMAL_DIG, (double)flt); printf("double precision:\nargument == %.*g\n", DBL_DECIMAL_DIG, dbl); ++*(int64_t*)&dbl; printf("next == %.*g\n", DBL_DECIMAL_DIG, dbl); return 0; }