Я видел следующие примеры в test your c (Автор: Yashvant Kanetkar).Почему оператор sizeof() разный в C
В следующем примере sizeof()
дает выходные данные 8
.
#include<stdio.h>
double d;
int main()
{
(int)(float)(char)d;
printf("%d\n",sizeof(d));
}
Но во втором примере, sizeof()
дает выход 4
.
#include<stdio.h>
double d;
int main()
{
printf("%d\n",sizeof((int)(float)(char)d));
}
Почему оба выхода отличаются? В книге нет объяснений.
'(INT) (с плавающей точкой) (символ) д;' В первом например, эта строка не действует. Таким образом, он заканчивается как 'sizeof (double)'. Во втором примере у вас есть 'sizeof (int)'. – DeiDei
Пожалуйста, бросьте эту книгу, это не учит вам ничего полезного. –
Не только '(int) (float) (char) d;' не влияет на ваше последующее использование 'sizeof'; это не имеет никакого значения *. это бессмысленная строка кода. Разумный компилятор C с достаточно высокими предупреждениями даст вам намек на этот эффект; clang, например, «main.c: 16: 5: Результат выражения не используется» – WhozCraig