У меня есть этот простой код, который преобразует между степенями Farehnheit и градусами Celcius. Я определил некоторые макросы, чтобы сделать это, но я получаю некоторые странные результаты, когда я его использую. Я использую этот метод, когда absoluteTemp
= 373,15 (точка кипения воды в кельвине).Макросы C++: порядок отличий приоритета?
#define kelvinToCelc(k) k - 273.15
#define celcToFahren(c) (9.0/5.0) * c + 32
double x = kelvinToCelc(absoluteTemp); // 100
double y = celcToFahren(x); // 212
double z = celcToFahren(kelvinToCelc(absoluteTemp)); // 430.52???
return celcToFaren(kelvinToCelc(absoluteTemp));
Это было бы намного лучше, чем функции. И http://coliru.stacked-crooked.com/a/3e592437849fd9ca – chris
используйте встроенную функцию вместо макроса, чтобы сохранить некоторые проблемы. –