— Как-то недавно услышал, что в C не требуется преобразование типов в случае malloc. Например, можно будет написать просто int *a = malloc (n * sizeof (int)). Сегодня решил проверить, и у меня не получилось, к сожалению. Это действительно так или нет?
— Почему printf ("%F", 2.5") ничего не выводит? Ведь это же аналог %f, но с выводом больших букв для INF, -INF и т.д., разве нет?
YLS>- Как-то недавно услышал, что в C не требуется преобразование типов в случае malloc. Например, можно будет написать просто int *a = malloc (n * sizeof (int)). Сегодня решил проверить, и у меня не получилось, к сожалению. Это действительно так или нет?
C или С++?
YLS>- Почему printf ("%F", 2.5") ничего не выводит? Ведь это же аналог %f, но с выводом больших букв для INF, -INF и т.д., разве нет?
Здравствуйте, YourLastSong, Вы писали:
V>>C или С++?
YLS>Пробовал в Visual Studio, указав в свойствах проекта компилировать код как C
Visual Studio не очень хорошо поддерживает стандартный С (даже старый С89). И что-то делать тут пока не собирается. Всё таки лучше для изучения языка С взять компилятор, который поддерживает язык С.
Здравствуйте, YourLastSong, Вы писали:
YLS>А почему вообще в C преобразование типов делать не надо?
Потому что в стандарте так написано: >A pointer to void may be converted to or from a pointer to any incomplete or object type. A pointer to any incomplete or object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer.
YLS> Там ведь malloc возвращает то же самое, что и в C++, разве нет?
Какая разница что возвращает в С++? Это другой язык.
YLS>И что по поводу printf?
printf часть языка С.
VisualStudio плохо поддерживает язык C, в частности не полностью поддерживает стандартные типы printf.