sizeof ((int) (float) (char) i)), когда int определен (int) (float) (char) i; - PullRequest
1 голос
/ 13 января 2011
#include<stdio.h>
double i;

int main()
{
    (int)(float)(char) i;
    printf("%d", sizeof((int)(float)(char)i));
    return 0;
}

Выше приведены 4 на компиляторе Micrsoft. Почему?

Ответы [ 3 ]

4 голосов
/ 13 января 2011

sizeof - размер переменной в байтах. В этом случае i преобразуется в int, что составляет 4 байта.

Это размеры типов на MS C ++: http://msdn.microsoft.com/en-us/library/cc953fe1(v=vs.71).aspx

2 голосов
/ 13 января 2011

Последней операцией приведения является int, поэтому вы получите sizeOf (int).Целочисленный размер отличается от компилятора формы другим, некоторые возвращают 2 байта, а другие возвращают 4 байта.

0 голосов
/ 13 января 2011

sizeof что-то говорит вам, сколько байтов занимает в памяти. Ваша платформа и набор инструментов явно имеют 32-битные целые числа; он говорит вам, что int в вашей цепочке инструментов (компилятор) занимает 4 байта.

...