What is the output of this C program? : I expect the output to be "short int" but the output is "float".

    #include <stdio.h>
    int main()
    {
        int x = 1;
        short int i = 2;
        float f = 3;
        if (sizeof((x == 2) ? f : i) == sizeof(float))
            printf("float\n");
        else if (sizeof((x == 2) ? f : i) == sizeof(short int))
            printf("short int\n");
    }