Typecasting

برنامه‌نویس باید همواره هنگام تغییر نوع داده به typecasting توجه داشته باشد، وگرنه ممکن است دچار خطاهایی شود که پیدا کردن آن زمانبر باشد.

#include <stdio.h>

float typecasting(int a);
float typecasting_without(int a);
float typecasting_incomplete(int a);

int main()
{
    int a = 5;
    float b1, b2, b3;

    b1 = typecasting(a);
    b2 = typecasting_without(a);
    b3 = typecasting_incomplete(a);

    printf("(5 / 2) * 2 + (5 / 2) * 2 =\n\n%f\n%f\n%f\n", b1, b2, b3);

    return 0;
}

float typecasting(int a)
{
    return (a / (float)2) * 2 + (a / (float)2) * 2;
}

float typecasting_without(int a)
{
    return (a / 2) * 2 + (a / 2) * 2;
}

float typecasting_incomplete(int a)
{
    return (a / (float)2) * 2 + (a / 2) * 2;
}

خروجی کد بالا:

((5 / 2) * 2) + ((5 / 2) * 2) =

10.000000
9.000000
8.000000

همانطور که در خروجی قابل مشاهده است، جواب درست ۱۰ می‌باشد، اما اگر typecasting انجام نشود یا بطور ناقص انجام شود، جواب مد نظر ما بدست نمی‌آید.