C언어 질문입니다.
#include
int main()
{
float a1 = 0, a2 = 0;
char c = " ";
do {
printf("Input an arithmetic operation (press 0 0 0 to finish program)\n");
scanf("%f%c%f", &a1, &c, &a2);
if (c == "+")
printf("= %.2f\n", (a1 + a2));
else if (c == "-")
printf("= %.2f\n", (a1 - a2));
else if (c == "*")
printf("= %.2f\n", (a1 * a2));
else if (c == "/")
printf("= %f\n", (a1 / a2));
else
printf("Please input correct expression\n\n");
} while (c != "0");
if (c == "0")
return 0;
}
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '!=': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4477: 'scanf_s' : 서식 문자열 '%c'에 'unsigned int' 형식의 인수가 필요하지만 variadic 인수 3의 형식이 'float *'입니다.
note: 이 인수는 버퍼 크기로 사용됩니다.
arning C4473: 'scanf_s': 서식 문자열에 대한 인수가 충분하게 전달되지 않았습니다.
note: 자리 표시자 및 해당 매개 변수에는 variadic 인수가 4개 필요하지만 3개가 제공되었습니다.
note: 누락된 variadic 인수 4이(가) 서식 문자열 '%f'에 필요합니다.
warning C4101: 'a2' :참조되지 않은 지역 변수입니다.
warning C4101: 'a1' :참조되지 않은 지역 변수입니다.
warning C4700: 초기화되지 않은 'c' 지역 변수를 사용했습니다.
그냥 사칙연산을 하는 코드인데
1.1 + 1.1을 입력하면 +를 인식못하고
1.1 / 1.1을 입력하면 출력이 무한반복됩니다.
어디서 문제가 있는건가요?
https://kldp.org/node
https://kldp.org/node/158191
https://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP#AEN70
위 글을 먼저 읽어보고 물어보세요.
char 와 array 에 대해 공부해 보세요.
세벌 https://sebuls.blogspot.kr/
먼저 a1, c, a2에 값이 잘 들어 왔는지
먼저 a1, c, a2에 값이 잘 들어 왔는지 디버그나 출력을 해 보시기 바랍니다.
c 를 char 로 할 거면 작은 따옴표 쓰셔야 할
c 를 char 로 할 거면 작은 따옴표 쓰셔야 할 듯. 큰 따옴표 아니고요.
이런 건 컴파일러에서 에러 보여줄 줄 알았는데, 경고만 내는군요...
원하는 결과 안 나올 가능성이 크겠군요...
세벌 https://sebuls.blogspot.kr/
흠.
맨마지막에 있는 코딩 출력이 궁금해서 해봤는데요.. 왜 출력만 안되고 오류목록이 없지?
#include
#include
#include
int main()
{
float a1 = 0, a2 = 0;
wchar_t c = L' ';
setlocale(LC_ALL, "korean");
do {
wprintf(L"부동소수점 연산을 입력해주세요.(종료할려면 0 0 0를 입력)\n");
wscanf_s(L"%f %c %f", &a1, &c, &a2);
if (c == L'+')
wprintf(L"= %.2f\n", (a1 + a2));
else if (c == L'-')
wprintf(L"= %.2f\n", (a1 - a2));
else if (c == L'*')
wprintf(L"= %.2f\n", (a1 * a2));
else if (c == L'/')
wprintf(L"= %f\n", (a1 / a2));
else
wprintf(L"연산를 다시입력해주세요.\n\n");
} while (c != '0');
if (c == '0')
return 0;
}
댓글 달기