계산기의 '%'(모듈러스) 함수에 대한 사례를 작성해야합니다. 컴파일 할 때 fmod
기능을 잘못 사용했다고합니다. '%'대/소문자를 사용하지 않으면 나머지 코드가 올바르게 작동합니다.계산기와 C의 부동 소수점 모듈러스 함수
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h> // Originally missing
#define MAXOP 100
#define NUMBER '0'
int getop(char []);
void push(double);
double pop(void);
main()
{
int type;
double op2;
char s[MAXOP];
printf("\nEnter numbers below in the following format\nwith a space between each:\n");
printf("\tnum1 num2 operator\n");
printf("\tyou may use (+, -, /, *) for the operators\n");
while((type = getop(s)) != EOF)
{
switch(type)
{
case NUMBER:
push(atof(s));
break;
case '+':
push(pop() + pop());
break;
case '*':
push(pop() * pop());
break;
case '-':
op2 = pop();
push(pop() - op2);
break;
case '/':
op2 = pop();
if(op2 != 0.0)
push(pop()/op2);
else
printf("error: zero divisor\n");
break;
case '%':
op2=pop();
if(op2 != 0.0)
push(fmod(pop(),op2));
else
printf("error: zero divisor");
break;
case '\n':
printf("\t%.8g\n", pop());
break;
default:
printf("error: unknown command %s\n", s);
break;
}
}
return 0;
}
은 내가 fmod
기능을보고, 그것이 작동하지 않습니다 난 아직도 왜 알아낼 수 없습니다. 이견있는 사람?
#include <math.h>
누락
/tmp/ccgiVhWI.o: In function `main':
calc.c:(.text+0x14f): undefined reference to `fmod'
collect2: ld returned 1 exit status
모듈러스 연산자 (%)를 사용하지 않는 이유는 무엇입니까? –
@KevinMangold :'% '의 피연산자는 모두 정수 여야하지만 부동 소수점 숫자를 다루고 있기 때문입니다. –
'백분율 함수'는 특히 정확한 설명이 아닙니다. 모듈러스 함수입니다. –