kirillmax K kirillmax Регистрация 22 Ноя 2013 Сообщения 91 Репутация 0 Спасибо 0 Монет 0 30 Окт 2016 #1 Проблема с sizeof, а также CHAR_MAX и ему подобными. Для чего они нужны? Почитала книги там все в общих словах (это перегруженные функции). А хотелось бы поподробнее, что к чему. Сама прога: #include #include #include #include main() { char c; unsigned char uc; int i; unsigned u; short s; long l; float f; double d; printf("sizeof(c)=%d sizeof(uc)=%d sizeof(i) =%d sizeof(u)=%d sizeof(s)=%d sizeof(l)=%d sizeof(f)=%d sizeof(d)=%d ", sizeof(c), sizeof(uc), sizeof(i), sizeof(u), sizeof(s), sizeof(l), sizeof(f), sizeof(d)); uc=c=CHAR_MAX; printf("CHAR_MAX : c=%d uc=%d ", c, uc); c++; uc++; printf("CHAR_MAX+1 : c=%d uc=%d ", c, uc); uc=c=CHAR_MIN; printf("CHAR_MIN : c=%d uc=%d ", c, uc); c=uc=UCHAR_MAX; printf("UCHAR_MAX : c=%d uc=%d ", c, uc); c++; uc++; printf("UCHAR_MAX+1 : c=%d uc=%d ", c, uc); uc=c=-5; printf("-5 : c=%d uc=%d ", c, uc); c=-5; uc=5; printf("char and unsigned char -5>5 : %d ", c>uc); c=s=SHRT_MAX; uc=s; printf("SHRT_MAX : c=%d uc=%d s=%d ", c, uc, s); s++; printf("SHRT_MAX+1 : s=%d ", s); c=s; uc=s; printf("%d : c=%d uc=%d ", SHRT_MIN, c, uc); s=0; c=s; uc=s; printf("0 : c=%d uc=%d s=%d ", c, uc, s); i=INT_MAX; l=i; u=i; printf("INT_MAX : i=%d u=%u l=%ld ", i, u, l); i++; l++; u++; printf("INT_MAX+1 : i=%d u=%u l=%ld ", i, u, l); i=INT_MIN; l=i; u=i; printf("INT_MIN : i=%d u=%u l=%ld ", i, u, l); u=UINT_MAX; i=u; l=u; printf("UINT_MAX : i=%d u=%u l=%ld ", i, u, l); u=i=-5; printf("-5 : i=%d u=%u ", i, u); i=-5; u=5; printf("int and unsigned int -5>5 : %d ", i>u); c=-5; u=5; printf("char and unsigned int -5>5 : %d ", c>u); i=5.1; printf("i=5.1 : i=%d ", i); i=5.9; printf("i=5.9 : i=%d ", i); d=f=FLT_MAX; printf("FLT_MAX : f=%g d=%g ", f, d); d=f=FLT_MIN; printf("FLT_MIN : f=%g d=%g ", f, d); d=f=FLT_EPSILON; printf("FLT_EPSILON : f=%g d=%g ", f, d); f=1e10; printf("1e10 : f=%f ", f); f=1e11; printf("1e11 : f=%f ", f); f=1234567890; printf("1234567890 : f=%f ", f); d=DBL_MAX; printf("DBL_MAX : d=%g ", d); d=DBL_MIN; printf("DBL_MIN : d=%g ", d); d=DBL_EPSILON; printf("DBL_EPSILON : d=%g ", d); d=1e15+1; printf("1e15+1 : d=%lf ", d); d=1e16+1; printf("1e16+1 : d=%lf ", d); f=10000*100000; f+=1; f-=4*250000000; printf("1 : f=%f ", f); f=10000*100000+1-4*250000000; printf("1 : f=%f ", f); d=10000*100000+1-4*250000000; printf("1 : d=%lf ", d); d=1e20*1e20+1000-1e22*1e18; printf("1000 : d=%lf ", d); system("pause"); return 0; }
Проблема с sizeof, а также CHAR_MAX и ему подобными. Для чего они нужны? Почитала книги там все в общих словах (это перегруженные функции). А хотелось бы поподробнее, что к чему. Сама прога: #include #include #include #include main() { char c; unsigned char uc; int i; unsigned u; short s; long l; float f; double d; printf("sizeof(c)=%d sizeof(uc)=%d sizeof(i) =%d sizeof(u)=%d sizeof(s)=%d sizeof(l)=%d sizeof(f)=%d sizeof(d)=%d ", sizeof(c), sizeof(uc), sizeof(i), sizeof(u), sizeof(s), sizeof(l), sizeof(f), sizeof(d)); uc=c=CHAR_MAX; printf("CHAR_MAX : c=%d uc=%d ", c, uc); c++; uc++; printf("CHAR_MAX+1 : c=%d uc=%d ", c, uc); uc=c=CHAR_MIN; printf("CHAR_MIN : c=%d uc=%d ", c, uc); c=uc=UCHAR_MAX; printf("UCHAR_MAX : c=%d uc=%d ", c, uc); c++; uc++; printf("UCHAR_MAX+1 : c=%d uc=%d ", c, uc); uc=c=-5; printf("-5 : c=%d uc=%d ", c, uc); c=-5; uc=5; printf("char and unsigned char -5>5 : %d ", c>uc); c=s=SHRT_MAX; uc=s; printf("SHRT_MAX : c=%d uc=%d s=%d ", c, uc, s); s++; printf("SHRT_MAX+1 : s=%d ", s); c=s; uc=s; printf("%d : c=%d uc=%d ", SHRT_MIN, c, uc); s=0; c=s; uc=s; printf("0 : c=%d uc=%d s=%d ", c, uc, s); i=INT_MAX; l=i; u=i; printf("INT_MAX : i=%d u=%u l=%ld ", i, u, l); i++; l++; u++; printf("INT_MAX+1 : i=%d u=%u l=%ld ", i, u, l); i=INT_MIN; l=i; u=i; printf("INT_MIN : i=%d u=%u l=%ld ", i, u, l); u=UINT_MAX; i=u; l=u; printf("UINT_MAX : i=%d u=%u l=%ld ", i, u, l); u=i=-5; printf("-5 : i=%d u=%u ", i, u); i=-5; u=5; printf("int and unsigned int -5>5 : %d ", i>u); c=-5; u=5; printf("char and unsigned int -5>5 : %d ", c>u); i=5.1; printf("i=5.1 : i=%d ", i); i=5.9; printf("i=5.9 : i=%d ", i); d=f=FLT_MAX; printf("FLT_MAX : f=%g d=%g ", f, d); d=f=FLT_MIN; printf("FLT_MIN : f=%g d=%g ", f, d); d=f=FLT_EPSILON; printf("FLT_EPSILON : f=%g d=%g ", f, d); f=1e10; printf("1e10 : f=%f ", f); f=1e11; printf("1e11 : f=%f ", f); f=1234567890; printf("1234567890 : f=%f ", f); d=DBL_MAX; printf("DBL_MAX : d=%g ", d); d=DBL_MIN; printf("DBL_MIN : d=%g ", d); d=DBL_EPSILON; printf("DBL_EPSILON : d=%g ", d); d=1e15+1; printf("1e15+1 : d=%lf ", d); d=1e16+1; printf("1e16+1 : d=%lf ", d); f=10000*100000; f+=1; f-=4*250000000; printf("1 : f=%f ", f); f=10000*100000+1-4*250000000; printf("1 : f=%f ", f); d=10000*100000+1-4*250000000; printf("1 : d=%lf ", d); d=1e20*1e20+1000-1e22*1e18; printf("1000 : d=%lf ", d); system("pause"); return 0; }