NULL - заменитель двойного стандарта языка C на 99 - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю над Циркулярно-двусвязным списком со стражем на языке Си со стандартом 99.Заголовки, которые мне разрешено использовать для класса, это только stdio.h, stdlib.h и assert.h.

Часовой является структурой, а структуры имеют элемент данных value, который является двойным значением.Мне было интересно, если есть замена для NULL с двойными?Похоже, NULL может использоваться для целочисленных типов данных, но не для двойных.Я пытался использовать Nan и NAN, но компилятор не принимает их.Я подумал об использовании произвольного числа, но хотел знать, был ли в этой конкретной ситуации конкретный заменитель NULL?

1 Ответ

0 голосов
/ 12 февраля 2019

NaN является подходящим значением для цели, которую вы ищете.C предоставляет символ NAN, который может использоваться для представления NaN.Однако определение NAN предоставляется в <math.h>, которого нет в заголовках, которые вам разрешено использовать.Вместо этого вы можете получить NaN через double NaN = strtod("NAN", 0);, после включения <stdlib.h>.(Выделите chux за напоминание.)

Кажется странным, что назначение потребовало бы от вас использовать значение часового в double без предоставления вам доступа к <math.h>.Скорее всего, вы должны использовать нулевой указатель в элементе указателя структуры, а не пытаться использовать double, чтобы отметить конец списка.Или, если не нулевой указатель, добавьте еще один элемент в структуру, чтобы пометить конец.Или определите конец, запомнив, где вы вошли в список - когда вы прошли круговой список обратно к исходной точке, вы полностью прошли список.

...