У C репутация негибкого языка. Но вы знаете, что вы можете изменить порядок аргументов функции в C, если он вам не нравится?
#include
#include
double DoubleToTheInt(double base, int power) {
return pow(base, power);
}
int main() {
// приводим к указателю на функуцию с обратным порядком аргументов
double (*IntPowerOfDouble)(int, double) =
(double (*)(int, double))&DoubleToTheInt;
printf("(0.99)^100: %lf \n", DoubleToTheInt(0.99, 100));
printf("(0.99)^100: %lf \n", IntPowerOfDouble(100, 0.99));
}
Этот код на самом деле никогда не определяет функцию `IntPowerOfDouble` — потому что функции `IntPowerOfDouble` не существует. Это переменная, указывающая на `DoubleToTheInt`, но с типом, который говорит, что ему хочется, чтобы аргумент типа `int` шел перед аргументом типа `double`.
Вы могли бы ожидать, что `IntPowerOfDouble` примет аргументы в том же порядке, что и `DoubleToTheInt`, но приведет аргументы к другим типам, или что-то типа того. Но это не то, что происходит.
Попробуйте — вы увидите одинаковый результат в обоих строчках.
emiller@gibbon ~> clang something.c
emiller@gibbon ~> ./a.out
(0.99)^100: 0.366032
(0.99)^100: 0.366032 [Читать дальше →][1]
[1]:
https://habrahabr.ru/post/307706/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut