2015-01-03 4 views
1

방금 ​​면책 조항, 나는 이러한 것들을 가진 초보자입니다. 나는 단지 C로 도약을했고, 프로그래밍에 대해 전반적으로 다루었 기 때문에, 그것을 생각해보십시오, 고맙습니다.왜 pow() 함수에서 정수를 사용할 수 없습니까?

안녕하세요, 스택 오버플로. 나는 어떤 이유로 든 제대로 작동하기를 원하지 않는 코드 조각을 가지고 있습니다. pow() 함수는 정수를 입력하는 방식을 좋아하지 않는 것 같고 IDE에서 인수 1 (정수를 보유하는 인수)의 형식이 호환되지 않는다고 알려줍니다. 내가 뭔가 잘못하고 있는거야? 이것은 초보자의 실수이며 나는 단순히 뭔가를 놓치고 있습니까? pow() 함수에서 정수를 인수로 사용할 수 있습니까?

다음은 사용중인 코드 행입니다. 또한 정수를 취하고 사각형을 사용하는 프로그램을 만들려고하는데 아주 기본적인 프로젝트로 printf("text")을 통해 사용자에게 전달하려고합니다. 필요하다면

SquaredIV = pow(&InputVar, 2);

나는 코드의 더 많은 라인을 게시 할 수 있습니다,하지만 지금 난 그냥이 떠날거야. 이 코드를 도와주세요. 감사. C &에서

답변

3

당신은 pow 함수에 인수로 정수를 사용할 수 있습니까? '

예, 할 수 있습니다. 정수 값은 암시 적으로 올바른 유형의 부동 소수점 값으로 변환됩니다. 귀하의 경우

: & 단항 연산자를 피연산자 객체에 대한 포인터로서 수득

SquaredIV = pow(&InputVar, 2); 

문제 &InputVar되어 있지 정수 형이지만 포인터 타입이다.

+0

좋아요, 그래서 당신 말을 듣고 당신이 옳았습니다. 정수 대신 포인터를 놓았습니다. 이것으로 문제를 해결했지만 새로운 것을 밝혀 냈습니다. 프로그램을 처음 실행할 때 숫자 대신 숫자가 인쇄 된 후 사용자에게 숫자를 입력하도록 요청하는'printf()'줄이 나타납니다! 명령을 통해 printf() 행이 먼저 표시되도록하려면 어떻게해야합니까? – E101K

+0

여기에 코드가 있습니다.편집 : 그것을 떠나는 [pastebin 링크] (http://pastebin.com/h7fJmxK7) beacuse 나를 미친 운전 서식입니다. 죄송합니다. – E101K

+0

@ E101K 프로그램의'scanf'와'printf' 문장을 뒤집어 쓰는 것은 어떨까요? – ouah

0

address-of입니다 operatior는 inputvar 펑의 주소가 유용 아무것도 할 수 없습니다 ..

코드가 시작 근처에 있어야한다 얻을 것입니다.

#include <math.h> 

하고 나중에 파일의 어떤 일어날 것은 컴파일러가 math.h에서 펑의 정의를 찾아 알 것입니다 실제로 전쟁 포로에 대한 입력으로 정수를 사용하지 않는 것

SquaredIV = pow(InputVar, 2); 

, intdouble (배정 밀도 부동 소수점)으로 변환하고이를 pow로 보내야합니다. Pow는 결과를 double으로 반환하고 컴파일은 이것을 SquaredIV 유형으로 변환하는 것을 알게 될 것입니다.

일반적으로 정수를 제곱하는 가장 일반적인 방법은 정수를 곱하는 것입니다.

SquaredIV = InputVar*InputVar; 
+0

@Blastfurnace 완료 !, 감사합니다. – Jasen