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
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
В последнем случае сыграла, видимо, какая-то оптимизация компилятора и реального вызова pow не было.
Вообще 99 получается в результате преобразования плавающей точки в int.
Ответ написан
Комментировать
@TheCalligrapher
Ваш код некорректен в принципе. Функция pow не объявлена. Язык С не разрешает вызов необъявленных функций. Даже если ваш компилятор умудрился это как-то скомпилировать, поведение все равно не определено.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект