А>Какая между ними разница(unspecified и undefined)? Различается несколько вариантов поведения программ, выходящего за рамки стандарта: undefined, unspecified и implementation-defined. Implementation-defined behavior (1.3.5) Самый мягкий вариант. Поведение программы при корректных входных данных носит четко определенный характер, но зависит от реализации, при этом документация, поставляемая с транслятором обязана содержать описание варианта, выбранного в данной реализации. Unspecified behavior (1.3.13) Почти то же, что implementation-defined, но реализация вольна не содержать в документации соответствующего описания. Undefined behavior (1.3.12) Самый неприятный вариант. Стандарт не накладывает никаких ограничений на программу, выполнение которой приводит к неопределенному поведению. Может проявляться самым разнообразным образом: от мистических "падений" программы и/или порчи программой данных и/или параметров окружения (включая страшилки о форматировании винчестера), до непредсказуемого поведения транслятора при обработке данной программы: от выдачи "нормальной" диагностики до внутренних ошибок транслятора и т.п. |