2015-01-03 1 views
1

Просто отказ от ответственности, я новичок с этими вещами. Я только что сделал прыжок в C и в программирование в целом, поэтому, пожалуйста, обратите внимание, спасибо.Почему я не могу использовать целые числа в функции pow()?

Hello, Stack Overflow. У меня здесь есть код, который по какой-то причине не хочет работать должным образом. Функция pow() не похожа на способ ввода целых чисел, и моя IDE сообщает мне, что тип аргумента для аргумента 1 (аргумент, который содержит целое число) несовместим. Я делаю что-то неправильно? Это ошибка новичка, и я просто что-то пропустил? Можете ли вы использовать целые числа в качестве аргументов в функции pow()?

Вот строка кода, который я использую. Кроме того, просто для того, чтобы отметить, что я пытаюсь сделать программу, которая принимает целое число и квадратизирует ее, сообщая пользователю через printf("text") как очень простой проект.

SquaredIV = pow(&InputVar, 2);

я могу разместить больше строк кода, если это необходимо, но сейчас я просто хочу, чтобы оставить это. Пожалуйста, помогите мне с этим кодом. Благодарю.

ответ

3

Вы можете использовать целое число в качестве аргументов функции pow? `

Да, вы можете. Целочисленное значение неявно преобразуется в значение с плавающей запятой правильного типа.

В вашем случае:

SquaredIV = pow(&InputVar, 2); 

проблема &InputVar не целого типа, но типа указателя, как & унарный оператор дает указатель на объект операнда.

+0

Хорошо, поэтому я слушал вас, и вы были правы; Я поставил вместо целого указатель. Хотя это исправило проблему, она показала новую: строка 'printf()', которая запрашивает у пользователя ввод числа, приходит после того, как будет напечатан номер, а не раньше, когда программа будет запущена в первый раз! Как сделать так, чтобы команда сначала отображала строку printf()? – E101K

+0

Вот код, между прочим.EDIT: Оставив это [в ссылке pastebin] (http://pastebin.com/h7fJmxK7), форматирование сводит меня с ума. Сожалею. – E101K

+0

@ E101K ну а как просто инвертировать операторы 'scanf' и' printf' в вашей программе? – ouah

0

В с & является address-of operatior он даст адрес inputvar мощн не будет в состоянии сделать что-нибудь полезное, что ..

код должен иметь вблизи начала.

#include <math.h> 

а затем в файле

SquaredIV = pow(InputVar, 2); 

, что фактически не использует целое число в качестве входных мощн, что будет происходить в том, что компилятор будет найти определение мощн в math.h и знать он должен преобразовать int в double (с двойной точностью с плавающей запятой) и отправить его в pow. Pow вернет результат как double, и компилятор будет знать, чтобы преобразовать его в любой тип SquaredIV.

Обычный (наиболее эффективный) способ квадрата целого числа состоит в том, чтобы размножить его самостоятельно.

SquaredIV = InputVar*InputVar; 
+0

@Blastfurnace done !, thanks – Jasen