Qubc
@Qubc
Ненавижу полисемию.

Почему приведение (int) pow ( variable1, variable2 ) отличается от (int) pow ( constant1, constant2 )?

#include <stdio.h>
#include <math.h>
int main() {
	int base = 10;
	int k = 2;
	printf("%d\n", (int) pow(base, k) );//99
	printf("%d\n", (int) pow(base, 2) );//99
	printf("%d\n", (int) pow(10, k) );//99
	printf("%d\n", (int) pow(10, 2) );//100
	return 0;
}

gcc (MinGW.org GCC-6.3.0-1) 6.3.0
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
В последнем случае сыграла, видимо, какая-то оптимизация компилятора и реального вызова pow не было.
Вообще 99 получается в результате преобразования плавающей точки в int.
Ответ написан
Комментировать
@TheCalligrapher
Ваш код некорректен в принципе. Функция pow не объявлена. Язык С не разрешает вызов необъявленных функций. Даже если ваш компилятор умудрился это как-то скомпилировать, поведение все равно не определено.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы