В стандарте ANSI C явно не указаны какие-либо подробности API для сложных арифметических операторов (+, -, *, /), хотя кажется, что реализация позволяет использовать эти примитивы. Мне интересно, как это возможно, поскольку C не реализует концепцию перегрузки оператора? Моя мысль заключается в том, что реализация макросов с указанием типа complex
, скорее всего, будет использовать встроенный тип, который делает, разрешать такие операции, но я тогда задаюсь вопросом, как комплексное число может допускать такой же диапазон значений, как, например, одно число с плавающей запятой (так как это должно было бы как-то быть представлено в виде пары из них, я бы подумал, что его диапазон будет сокращен вдвое)?Как сложные арифметические операторы, реализованные в C?
Я думаю о правильных строках, или я нахожусь в стороне от этого?
«макросы, определяющие сложный тип» - какие макросы? '_Complex' встроен в язык (и макрос' complex' предоставляется для удобочитаемости) –
Таким образом, тип '_Complex' не может быть реализован библиотекой, а также арифметические операторы встроены в язык, а не в библиотеку ? (как и с любыми другими встроенными типами?) – jwalk
Да, это правильно. Библиотека должна иметь указанные функции библиотеки, которые принимают сложные значения (например, 'cabs') –